팀명 낫 에러(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 데이터 파씽 규칙

스크린샷 2022-10-08 오후 10.14.38.png

✅ 파씽한다는 것은 이미지와 같이 데이터를 객체(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) | |