<aside> 💡 API에 대해 정의하는 공간입니다.
https://meetup.toast.com/posts/92
</aside>
※ (공통) 에러 발생 시 응답 정보 json 데이터 (예시)
**{
"statusCode": "500 INTERNAL_SERVER_ERROR",
"requestUrl": "/host/[email protected]",
"message": "호스트 정보가 존재하지 않습니다"
}**
※ Swagger API Docs
<aside> 💡 swagger 확인은 아래 사이트를 참조한다. (본인 로컬 pc의 호스트 주소 입력) http://localhost:8000/swagger-ui/index.html#
</aside>
※ 참고 테이블
구분 | REST 여부 | URL | 서비스 | 기능 설명 | 접속 대상 | 요청 및 응답 데이터 (body, header, parameter 등등) | 개발 여부 |
---|---|---|---|---|---|---|---|
공통(이미지) | Y | POST: /images | 이미지 정보 저장 | 이미지 정보를 AWS S3 storage에 저장한다. | 로그인(게스트,호스트) | 클라이언트 → 서버 | |
multipart/form-data , multiple 폼을 통해 전송 된 |
|||||||
image 파일 리스트 데이터 |
서버 → 클라이언트 응답 값 아래와 같은 image 경로 문자열이 담긴 배열 [ ”image-url”, ”image-url”, ”image-url”, ”image-url” ] | api 완료 | | 메인(사용자) | Y | GET: / | 메인 화면 | 메인 페이지를 반환해주는 API 로그인 안되었을 경우, 로그인 버튼 로그인 된 경우, 유저 프로필 정보 반환 | 누구나 | 로그인 시에, 헤더(유저 프로필) 정보 | 예정 | | 로그인 | Y | POST: /login | 로그인 화면/창 | 로그인 버튼 클릭 시, 로그인 화면. 프론트엔드 분들의 의견에 따라, 로그인 창이 아닌, 로그인 팝업창을 보여줘도 됨. | 누구나 | 로그인 시 필요한 데이터 { ”email” : “[email protected]”, ”password” : “password” }
반환 데이터 { ”accesstoken” : “json web token”, ”refreshtoken” : “json web token” } | api 완료 | | 로그아웃 | Y | POST: /logout | 메인 화면 | 로그아웃 요청 시 로그인 했을 때 받은 refresh token 이 삭제됩니다. | 로그인(게스트,호스트) | 로그아웃 시 필요한 데이터 { ”email” : “[email protected]”, ”refreshtoken” : “json web token” }
로그아웃 성공 시 홈페이지로 이동한다. | api 완료 |
| 회원가입 | Y | POST: /signup | 회원가입 | 회원가입을 수행한다.
회원가입 시에, 기본적으로 GUEST로 가입 된다. | 누구나 | 회원 가입 시 필요한 정보 body json 데이터 양식
{
"email" : "[email protected]",
"password" : "12345",
"name" : "김테스트",
"birth" : "2000-02-03",
"phone" : "010-0002-0392"
}
가입 성공 시 회원의 정보가 반환된다. | api 완료 |
| 회원 인증 | Y | GET: /signup/email-auth/{key} | 메인 화면 (인증 회원) | 이메일 인증에 성공한 회원이 볼 수 있는 화면에 지정 된 값을 반환한다. | 인증 회원 | | api 완료 |
| 회원 정보 | Y | GET: /guest/{id} | 특정 회원 정보 조회 | 해당 id 를 가진 게스트 정보를 반환하는 API | 로그인 된 게스트 | api 요청 예시
GET [<http://localhost:80>](<http://localhost:8080/>)00/guest/1
| api 완료 |
| 회원 정보 수정 | Y | PUT: /guest/update/{id} | 특정 회원 정보 수정 | 해당 id 를 가진 게스트 정보를 수정하는 API | 로그인 된 게스트 | 요청 데이터 예시
{
"email": "[email protected]",
"password": "Password0!",
"name": "뚜찌따찌따",
"birth": "1985.03.10",
"phone": "010-4343-5435",
"profileImage": "https://zerobnb-bucket.s3.amazonaws.com/image/김구라.png"
}
응답 데이터 : 변경된 유저의 정보 반환 | api 완료 |
| 회원 탈퇴 | Y | DELETE: /guest/delete/{id} | 특정 회원 탈퇴 | 해당 id 를 가진 게스트 탈퇴 | 로그인 된 게스트
호스트의 경우 등록된 숙소가 없어야 탈퇴 가능 | api 요청 데이터
DELETE [<http://localhost:8000/guest/dele>](<http://localhost:8000/guest/delete/>)
| api 완료 |
| 호스트 | Y | GET: /host/{email} | 호스트 메인 화면
| 호스트모드에서 게스트가 등록한 호스트 정보를 반환한다.
만약, 호스트모드를 시작하지 않거나 등록하지 않은 게스트일 경우, 예외 응답을 반환한다. | 로그인 된 게스트 | api 요청 예시
GET <http://localhost:8000/host/[email protected]
>
응답 데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 호스트 | Y | POST: /host/register | 호스트 정보 등록 | 호스트 모드에서 작성한 호스트 값을 등록한다. | 로그인 된 게스트/호스트 | 요청 데이터 예시
{ "businessContact" : "010-4948-3948", "companyRegistrationNumber": "2039484747", "profileImage": "<https://zerobnb-bucket.s3.amazonaws.com/image/%EC%95%84%EC%9D%B4%EC%9C%A0.jpg>", "email": "[email protected]" }
응답 데이터: 호스트 id | api 완료 |
| 호스트 | Y | PUT: /host/update/{hostId} | 특정 호스트 정보 변경 | 특정 호스트의 정보를 변경한다. | 로그인 된 게스트/호스트 | 요청 데이터 예시
{ "businessContact" : "010-4948-3948", "companyRegistrationNumber": "2039484747", "profileImage": "<https://zerobnb-bucket.s3.amazonaws.com/image/%EC%95%84%EC%9D%B4%EC%9C%A0.jpg>", "email": "[email protected]" }
응답 데이터: 호스트 id | api 완료 |
| 호스트 | Y | PATCH: /host/disable/{hostId} | 특정 호스트 비활성화 | 특정 호스트를 비활성화 한다. | 로그인 된 게스트/호스트 | 요청 데이터: 없음
응답 데이터: 호스트 id
| api 완료 |
| 호스트 | Y | PATCH: /host/able/{hostId} | 특정 호스트 활성화 | 특정 호스트를 활성화 한다. | 로그인 된 게스트/호스트 | api 요청 예시
PATCH <http://localhost:8000/host/able/1
>
응답 데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 호스트 | 숙박업소 | Y | GET: /accommodation/search/{hostId} | 호스트가 소유한 숙박업소 목록 반환 | 호스트가 소유한 숙박업소 목록을 반환한다. | 로그인 된 호스트 | ※ api 요청 예시
GET <http://localhost:8000/accommodation/search/1
>
응답 데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 호스트 | 숙박업소 | Y | POST: /accommodation/register | 호스트가 본인의 숙박 업소 정보를 등록 | 호스트가 본인이 소유한 숙박업소를 등록하는 기능이다. | 로그인 된 호스트 | ※ api 요청 예시
POST <http://localhost:8000/accommodation/register
>
※ 숙박업소 body json 데이터 양식은 swagger/데이터타입 문서 참조 | api 완료 |
| 호스트 | 숙박업소 | Y | PUT: /accommodation/update/{accommodationId} | 호스트가 소유한 특정 숙박업소의 정보를 수정 | 호스트가 본인이 소유한 특정 숙박업소의 정보를 수정하는 기능이다. | 로그인 된 호스트 | 위와 동일 | api 완료 |
| 호스트 | 숙박업소 | Y | DELETE: /accommodation/delete/{accommodationId} | 호스트가 소유한 특정 숙박업소를 삭제 | 호스트가 소유한 특정 숙박업소를 삭제하는 기능이다. | 로그인 된 호스트 | ※ api 요청 예시
DELETE <http://localhost:8000/accommodation/delete/7
> | api 완료 |
| 숙박업소 | 방 | Y | GET: /room/search/{accommodationId} | 특정 숙박업소의 방 정보 목록 반환 | 특정 숙박업소의 방 정보 목록을 반환한다. | 누구나 | ※ api 요청 예시
GET <http://localhost:8000/room/search/2
>
※ 방 정보 목록을 반환, json 데이터 양식은 swagger/데이터타입 참조 | api 완료 |
| 숙박업소 | 방 | Y | POST: /room/register | 호스트가 본인의 숙박 업소의 방 정보를 등록 | 호스트가 특정 숙박업소에 방 정보를 등록한다. | 로그인 된 호스트 | ※ api 요청 예시
POST <http://localhost:8000/room/register
>
※ 방 등록 정보 body json 데이터 양식은 swagger/데이터타입 문서 참조 | api 완료 |
| 숙박업소 | 방 | Y | PUT: /room/update/{accommodationId} | 호스트가 본인의 숙박 업소의 방 정보를 수정 | 호스트가 특정 숙박업소의 방 정보를 수정한다. | 로그인 된 호스트 | ※ api 요청 예시
PUT <http://localhost:8000/room/update/15
>
※ 방 수정 정보 body json 데이터 양식은 swagger/데이터타입 문서 참조 | api 완료 |
| 숙박업소 | 방 | Y | DELETE: /room/delete/{accommodationId} | 호스트가 본인의 숙박 업소의 방 정보를 삭제 | 호스트가 특정 숙박업소의 방 정보를 삭제한다 | 로그인 된 호스트 | ※ api 요청 예시
DELETE <http://localhost:8000/room/delete/15
> | api 완료 |
| 예약 및 결제 | Y | POST: /reservation | 게스트가 원하는 숙소 예약 및 결제 | 게스트가 본인이 원하는 숙소에 대해 예약과 결제를 하는 기능이다. | 로그인된 게스트 | 요청 데이터:
{ "roomId": 2, "checkInTime": "2022-09-28T00:00:00", "checkOutTime": "2022-09-30T00:00:00", "peopleCount": 2, "transportationType": "FOOT", "paymentForm": { "couponCost": 1000, "pointCost": 500, "paymentMethod": "CARD" } }
응답데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 예약목록 | Y | GET: /reservation/info/{guestId} | 게스트가 예약한 숙소 반환 | 게스트가 본인이 예약한 숙소 정보를 반환한다. | 로그인된 게스트 | 요청데이터: 없음
응답데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 예약취소 | Y | DELETE: /reservation/{reservationId} | 게스트가 예약한 숙소 취소 | 게스트가 본인이 예약한 숙소에 대해 취소하는 기능이다. | 로그인된 게스트 | 없음 | api 완료 |
| 메인 - 숙소 목록 | Y | GET: /main | 현 위치 기반 숙소 정보 반환 | 현 위치 기반 호스트가 등록한 숙소에 대해 반환한다. | 누구나 | 요청데이터: 없음
응답데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 메인 - 숙소 상세 정보 | Y | GET: /accommodation/info/(accommodationId} | 선택한 숙소에 대한 상세정보 반환 | 게스트가 선택한 숙소에 대한 상세 정보를 반환한다. | 누구나 | ※ api 요청 예시
GET <http://localhost:8000/accommodation/info/1
>
요청데이터: 없음
응답데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 게스트 | 리뷰 | Y | POST: /review/register | 게스트가 방문한 숙소 리뷰 등록 | 게스트가 방문한 특정 숙소에 대해 리뷰를 등록한다. | 로그인된 게스트 | 요청데이터: swagger/데이터타입 문서 참조
응답데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 게스트 | 리뷰 | Y | GET: /review/info/{guestId} | 게스트가 방문한 숙소 정보 반환 | 게스트가 방문한 숙소에 리뷰 목록을 반환한다. | 로그인된 게스트 | ※ api 요청 예시
GET <http://localhost:8000/review/info/1
>
응답데이터: swagger/데이터타입 문서 참조 | api 완료 |
| 게스트 | 리뷰 | Y | PUT: /review/update{reviewId} | 게스트가 방문한 숙소 리뷰 수정 | 게스트가 방문한 특정 숙소에 대해 등록한 리뷰를 수정한다. | 로그인된 게스트 | ※ api 요청 예시
GET <http://localhost:8000/review/update/1
>
요청데이터: swagger/데이터타입 문서 참조 응답데이터: swagger/데이터타입 문서 참조 | api 완료 | | 게스트 | 리뷰 | Y | DELETE: /review/delete/{reviewId} | 게스트가 등록한 숙소 리뷰에 대해 삭제(호스트) | 게스트가 등록한 리뷰에 대해 호스트가 삭제한다. | 로그인된 호스트 | 없음 | api 완료 | | | | | | | | | |