프로젝트D. 예약 : 예약 관련 WEB API

oyeon·2021년 3월 14일
1
post-custom-banner

개요

  • 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
}
  • id : 예약 id

Response Body 결과 속성에 대한 설명은 다음과 같다.

  • result : 성공 시 success, 실패시 fail

결과

로그인

Swagger 페이지

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

reservation_info 테이블

reservation_info_price 테이블

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

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

  • 1번 유저에게 16번 reservationId이 없으므로 fail
profile
Enjoy to study
post-custom-banner

0개의 댓글