
개요
- Spring Security를 활용한 로그인 기능 구현
- 네이버 예약 서비스의 예약하기, 예약 목록 보기, 예약 취소 기능을 구현
- 해당 기능을 Web API 문서로 작성
요구사항
- 기존의 프로젝트에 Controller, Service, Dao 등을 추가하여 개발합니다.
- Spring Security를 이용하여 로그인 페이지를 작성합니다.
- Swagger를 이용해 Web API 테스트 페이지를 제공합니다.
- Web API를 JUnit을 이용해 Test합니다.
설명
POST (예약 등록하기): /api/reservationInfos
※ 예약을 하기 위해서는 로그인한 상태여야 한다.
Request Body는 다음과 같이 입력받는다.
{
"prices": [
{
"count": 2,
"productPriceId": 3
}
],
"productId": 1,
"displayInfoId": 1,
"reservationYearMonthDay": "2020.01.02",
"userId": 1
}
- prices : 예매를 할 때 선택한 가격과 수량 정보
- productId : 상품 id
- displayInfoId : 전시 정보 id
- reservationYearMonthDay : 예약일 (반드시 yyyy.mm.dd 형식이어야 한다.)
- userId : 로그인한 사용자 id
Response Body 결과 속성에 대한 설명은 다음과 같다.
- id : 예약 id (자동 생성)
- productId : 상품 id
- displayInfoId : 전시 정보 id
- cancelFlag : 취소 유무 (0 : 취소 안함, 1 : 취소됨)
- reservationDate : 예약일
- createDate : 등록일
- modifyDate : 수정일
- prices : 예매를 할 때 선택한 가격과 수량 정보
GET (주문 정보 구하기): /api/reservationInfos
※ 주문 정보를 구하기 위해서는 로그인한 상태여야 한다.
- size : 예약한 상품 수
- items : 예약 상품 정보
PUT (예약 취소하기): /api/reservationInfos
※ 예약을 취소하기 위해서는 로그인한 상태여야 한다.
Request Body는 다음과 같이 입력받는다.
{
"id": 16
}
Response Body 결과 속성에 대한 설명은 다음과 같다.
- result : 성공 시 success, 실패시 fail
결과
로그인
Swagger 페이지

POST (예약 등록하기): /api/reservationInfos


reservation_info 테이블

reservation_info_price 테이블

GET (주문 정보 구하기): /api/reservationInfos

PUT (예약 취소하기): /api/reservationInfos


- 1번 유저에게 16번 reservationId이 없으므로 fail