| 팀명 |
낫 에러(056) |
| 프로젝트 명 |
채식이들 |
| 서비스 |
개인 맞춤형 채식 쇼핑몰 웹 애플리케이션 |
| 핵심 컨셉 |
개인마다 유형별 채식을 |
| 프로젝트 기간 |
22.09.07 ~ 22.10.12 |
| 작성자 |
강시혁 |
| 번호 |
버전 |
변경이력 |
수정 날짜 |
| 1 |
v.1.0 |
API 명세서 초안 작성 |
22.09.21 |
✔️ REST API URI ENDPOINT 명명 가이드
| 번호 |
규칙 |
상세 설명 |
| 1 |
리소스의 맥락을 파악할 수 있는 구조 |
• METHOD/table_name/(:row_id) |
| 2 |
resource는 단일 객체거나 집합 형태 |
• 집합 객체 URI - /customers |
| • 단일 객체 URI - /customers/{customerId} |
|
|
| 3 |
자원은 하위 집합 자원들을 포함 |
ex) questions - answers(하위 집합 자원) |
| • answers 집합 자원 |
|
|
◦ /questions/{questions}/answers
• answers 단일 자원
◦ /questions/{questionId}/answers/{answerId} |
| 4 | 2중 단어 이상은 ‘하이픈 ( hyphen - )’ 사용 | • hello-word
• 카멜 또는 스네이크 표기법 X |
| 5 | 소문자 사용 | |
| 6 | URI에 CRUD 의미가 포함되면 X (최대한 명사) | |
✔️ Response 데이터 파씽 규칙

✅ 파씽한다는 것은 이미지와 같이 데이터를 객체(Object), 또는 배열(Array)에 담아주는 것입니다.
| Parsing |
타입 |
리소스 |
내부 필드 |
| user |
Object |
USER 단일 데이터 |
response 내용 |
| users |
Array |
USER 데이터 리스트 |
response 내용 |
| product |
Object |
PRODUCT 단일 데이터 |
response 내용 |
| products |
Array |
PRODUCT 데이터 리스트 |
response 내용 |
| pageInfo |
Object |
Page에 대한 정보 |
page, size, totalElements, totalPages |
| sortInfo |
Object |
정렬 정보 |
sort, orderBy |
| errors |
Array |
에러 정보 리스트 |
status, message, validationError, constraintError |
✔️ (SPRINT1) API 명세서
| 요구사항명 |
HTTP METHOD |
endpoint |
Query Param |
request |
response |
HTTP STATUS |
특이사항 |
| 회원가입 기능 |
POST |
/api/users/join |
|
이메일, 이름, 우편번호, 도로명, 상세주소, 전화번호 |
|
201(created) |
정보 입력 후, 가입하기 버튼을 눌렀을 때 event 발생 |
| 초기 개인의 채식 유형 정보 저장 |
POST |
/api/users/join/{user_id}/type |
|
채식유형 |
회원명, 이메일, 전화번호, 우편번호, 주소, 상세주소, 채식유형, 가입유형 |
200(ok) |
|
| 로그아웃 |
DELETE |
/api/auth/local |
|
|
|
200(ok) |
세션을 삭제한다는 의미 |
| 소셜<구글> 인증 요청 |
GET |
/api/auth/google |
|
|
이메일, 이름 |
200(ok) |
구글 |
| 소셜 <카카오>인증 요청 |
GET |
/api/auth/kakao |
|
|
이메일, 이름 |
200(ok) |
카카오 |
| 소셜 <네이버> 인증 요청 |
GET |
/api/auth/naver |
|
|
이메일, 이름 |
200(ok) |
네이버 |
| 유저 개인 정보 조회 |
GET |
/api/users/info/{user_id} |
|
|
회원명, 이메일, 전화번호, 우편번호, 주소, 상세주소, 채식유형, 가입유형 |
200(ok) |
|
| 유저 개인 정보 수정 |
PUT |
/api/users/info/{user_id} |
|
전화번호, 우편번호, 주소, 상세주소, 채식유형 |
회원명, 이메일, 전화번호, 우편번호, 주소, 상세주소, 채식유형, 가입유형 |
200(ok) |
|
| 회원 탈퇴 |
DELETE |
/api/users/{user_id} |
|
|
|
204(no content) |
|
| 제품 전체 조회 |
GET |
api/products/list |
?page=1&size=20&sort=createAt&orderby=desc |
|
List 출력, |
|
|
| pageInfo, sortInfo 포함 |
200(ok) |
• (default) 신상품순, 1페이지당 20개 제품 출력 |
|
|
|
|
|
| • page : 요청 페이지 |
|
|
|
|
|
|
|
| • size : 페이지당 데이터 출력 수 |
|
|
|
|
|
|
|
| • sort 필드 |
|
|
|
|
|
|
|
◦ 최신순
▪ sort=signDate&orderby=desc
◦ 낮은 가격순
▪ sort=price&orderby=asc
◦ 높은 가격순
▪ sort=price&orderby=desc |
| 제품 개별 조회 | GET | api/products/detail/{product_id} | | | 제품명, 금액, 수량, 등록날짜, 썸네일 이미지, 상세 정보 이미지, 카테고리(array), 식재료(array) | 200(ok) | |
| 제품 등록 | POST | api/products | | 제품명, 금액, 수량, 썸네일 이미지, 상세 정보 이미지, 카테고리(array), 식재료(array) | 제품명, 금액, 수량, 등록날짜, 썸네일 이미지, 상세 정보 이미지, 카테고리(array), 식재료(array) | 201(created) | |
| 제품 수정 | PUT | api/products/{product_id} | | 제품명, 금액, 수량, 썸네일 이미지, 상세 정보 이미지, 카테고리(array), 식재료(array) | 제품명, 금액, 수량, 등록날짜, 썸네일 이미지, 상세 정보 이미지, 카테고리(array), 식재료(array) | 200(ok) | |
| 제품 삭제 | DELETE | api/products/{product_id} | | | | 204(no content) | |