음악 정보 제공 서버 (Python FastAPI)

음악 정보를 제공하고 좋아요 기능을 지원하는 RESTful API 서버입니다.

Python 3.10FastAPI

서버 실행 방법

다운로드한 zip 파일을 압축 해제한 후, 다음 명령어로 서버를 실행할 수 있습니다:

python 으로 서버 실행:

python run.py

uvicorn 으로 서버 실행:

uvicorn app.main:app --host 0.0.0.0 --port 8000

서버가 성공적으로 실행되면 localhost:8000에서 API를 사용할 수 있습니다.

Swagger UI는 localhost:8000/docs에서 확인할 수 있습니다.

API 명세서

모든 음악 목록 조회

GET/api/music

전체 음악 목록을 반환합니다.

응답 예시

[
  {
    "id": 1,
    "title": "Dynamite",
    "artist": "BTS",
    "album": "BE",
    "release_year": 2020,
    "genre": "K-pop",
    "duration": 199,
    "likes": 1000000
  },
  {
    "id": 2,
    "title": "Spring Day",
    "artist": "BTS",
    "album": "You Never Walk Alone",
    "release_year": 2017,
    "genre": "K-pop",
    "duration": 255,
    "likes": 950000
  }
]

특정 음악 정보 조회

GET/api/music/{music_id}

ID를 통해 특정 음악의 정보를 조회합니다.

쿼리 파라미터

music_id (int): 음악 ID (Path Parameter)

응답 예시

{
  "id": 1,
  "title": "Dynamite",
  "artist": "BTS",
  "album": "BE",
  "release_year": 2020,
  "genre": "K-pop",
  "duration": 199,
  "likes": 1000000
}

오류 응답

{
  "detail": "음악을 찾을 수 없습니다."
}

장르별 음악 목록 조회

GET/api/music/genre/{genre}

특정 장르의 음악 목록을 조회합니다.

쿼리 파라미터

genre (str): 장르명 (Path Parameter)

응답 예시

[
  {
    "id": 1,
    "title": "Dynamite",
    "artist": "BTS",
    "album": "BE",
    "release_year": 2020,
    "genre": "K-pop",
    "duration": 199,
    "likes": 1000000
  },
  {
    "id": 2,
    "title": "Spring Day",
    "artist": "BTS",
    "album": "You Never Walk Alone",
    "release_year": 2017,
    "genre": "K-pop",
    "duration": 255,
    "likes": 950000
  }
]

음악 좋아요 추가

POST/api/music/{music_id}/like

특정 음악의 좋아요 수를 1 증가시킵니다.

쿼리 파라미터

music_id (int): 음악 ID (Path Parameter)

응답 예시

{
  "message": "좋아요가 추가되었습니다."
}

오류 응답

{
  "detail": "음악을 찾을 수 없습니다."
}