과제
내 ERD를 보고 REST 형식에 맞게 API 디자인하기
상세내용
1. 파이썬&FastAPI 코드말고 엑셀 혹은 워드 등 문서로 작성할 것
- 코드는 본인이 별도로 작성하여 깃허브에 올려도 됨, 본 과제의 필수사항은 아님
2. API 디자인시에 반드시(!) 포함되어야 할 것
- HTTP 메서드
- 리소스 식별할 수 있는 path
- 리소스의 식별할 수 있는 식별자 아이디 또는 쿼리 파라메터
- 요청 Body가 있다면 요청 Body의 key, value, datatype 기입
- 응답 Body가 있다면 응답 Body의 key, value, datatype 기입
- 복수의(multiple) 응답 결과가 있을 경우 몇건, start-end를 기준할 수 있는 식별자 기입
3. 작성 시 참고사항
- GET : 단수 혹은 복수의 데이터를 조회하도록 됨
( 추상화됨 함수 이름 : findOne(), findAll() ) - POST : 보통 1개의 데이터를 Body를 통해 추가하도록 구현 됨 (복수는 예외사항)
( 추상화됨 함수 이름 : insertOne() ) - DELETE : 1개의 식별자를 통해 특정 데이터를 삭제하도록 됨
( 추상화됨 함수 이름 : deleteOne() ) - PUT : 보통 1개의 데이터를 Body와 식별자id 통해 해당 Body의 전문으로 갱신하도록 됨
( 추상화됨 함수 이름 : updateOne() ) - PATCH : 보통 1개의 데이터를 Body와 식별자id 통해 해당 Body 부분만 갱신하도록 됨
( 추상화됨 함수 이름 : updateOne() )
ERD
기존의 내 웹사이트의 ERD의 경우 아래의 주소에서 확인해 볼 수 있다.
2023.08.11 - [부트캠프/[NIPA] AI 웹개발 취업캠프] - [데일리 과제] ERD 고도화 및 정규화 2
[데일리 과제] ERD 고도화 및 정규화 2
ERD 고도화 및 정규화 2 유저에게서 더 많은 정보를 저장하기로 하였다. 본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 과정 학습/프로젝트/과제 기록으로 작성되었습니다.
07lee.tistory.com
API 디자인
회원가입
- 요청방식 : POST
- URL : /signup
"user_id": "사용자 아이디",
"login_id": "로그인 아이디",
"password": "비밀번호",
"email": "이메일 주소"
응답
# 201 Created
"message": "회원 가입이 성공적으로 완료되었습니다.",
"user_id": "사용자 아이디",
"email": "이메일 주소"
# 400 Bad Request
"error": "이미 사용 중인 사용자 아이디입니다."
# 400 Bad Request
"error": "올바르지 않은 이메일 주소입니다."
로그인
- 요청방식 : POST
- URL : /login
"login_id": "로그인 아이디",
"password": "비밀번호"
응답
# 200 OK
"message": "로그인이 성공적으로 완료되었습니다.",
"user_id": "사용자 아이디",
# 401 Unauthorized
"error": "로그인 아이디 또는 비밀번호가 올바르지 않습니다."
평가 조회
- 요청방식 : GET
- URL : /users/records/:login_id
응답
# 200 OK
"message": "평가 기록 조회가 성공적으로 완료되었습니다.",
"user_id": "사용자 아이디",
"records": [
{
"movie_id": "영화 아이디",
"rating": "점수"
"content": "이 영화 정말 좋았어요!"
},
{
"movie_id": "다른 영화 아이디",
"rating": "점수"
"content": "볼만한 영화였습니다."
}
]
# 404 Not Found
"error": "해당 로그인 아이디에 대한 평가 기록을 찾을 수 없습니다."
평가 수정
- 요청방식 : PATCH
- URL : /users/records/:movie_id
"rating": "수정된_평점",
"content": "수정된_평가_내용"
응답
# 200 OK
"message": "평가가 성공적으로 수정되었습니다.",
"movie_id": "영화 아이디",
"updated_rating": "수정된_평점",
"updated_content": "수정된_평가_내용"
작품 조회
- 요청방식 : GET
- URL : /movies/:movie_id
응답
# 200
"message": "작품 정보 조회가 성공적으로 완료되었습니다.",
"movie_name": "작품 이름",
"opening_date": "개봉일",
"image_url": "이미지 URL"
# 404
"error": "해당 작품 이름에 대한 정보를 찾을 수 없습니다."
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프런트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.