프로그래머스 데브코스, 국비지원교육, 코딩부트캠프
쉬엄쉬엄 쉬어갔던 날... 패키지를 조금 수정하고 swagger 문서를 작성한 게 전부다. 머쓱... swagger 문서를 작성할 때는 Chat GPT의 도움을 조금 받았다. 기존 작성한 코드를 보여주면서 틀을 짜달라고 했더니 짠 하고 짜주더라. 물론 내가 자잘한 부분은 수정을 했다.
전체 도서 조회
/**
* @swagger
* /books:
* get:
* summary: 전체 도서 조회
* description: 전체 도서를 조회합니다.
* tags: [Books]
* parameters:
* - in: query
* name: category_id
* description: 카테고리 아이디로 도서를 필터링합니다.
* schema:
* type: integer
* - in: query
* name: news
* description: 신간 도서만 조회합니다.
* schema:
* type: boolean
* - in: query
* name: limit
* description: 한 페이지에 보여줄 도서의 개수를 지정합니다.
* schema:
* type: integer
* - in: query
* name: current_page
* description: 현재 페이지를 지정합니다.
* schema:
* type: integer
* responses:
* 200:
* description: 전체 도서 조회 성공
* content:
* application/json:
* example:
* - id: 1
* title: Book 1
* img: 1
* category_id: 1
* form: ebook
* isbn: 123456789
* summary: Book 1 Summary
* detail: Book 1 Detail
* author: Author 1
* pages: 100
* contents: Book 1 Contents
* price: 10000
* pub_date: 2021-01-01
* likes: 10
* - id: 2
* title: Book 2
* img: 2
* category_id: 2
* form: ebook
* isbn: 987654321
* summary: Book 2 Summary
* detail: Book 2 Detail
* author: Author 2
* pages: 120
* contents: Book 2 Contents
* price: 20000
* pub_date: 2023-12-12
* likes: 16
* 404:
* description: 해당하는 도서가 존재하지 않을 때 반환합니다.
* content:
* application/json:
* example:
* message: 해당하는 도서가 존재하지 않습니다.
* 500:
* description: 서버 에러
* content:
* application/json:
* example:
* message: 도서 조회 중 에러가 발생하였습니다.
*/
/**
* @swagger
* /books/{id}:
* get:
* summary: 개별 도서 조회
* description: 개별 도서를 조회합니다.
* tags: [Books]
* parameters:
* - in: path
* name: id
* description: 도서 아이디로 조회합니다.
* required: true
* schema:
* type: integer
* - in: body
* name: user_id
* description: 좋아요 여부를 확인할 사용자 아이디입니다.
* required: true
* schema:
* type: object
* properties:
* user_id:
* type: integer
* responses:
* 200:
* description: 개별 도서 조회 성공
* content:
* application/json:
* example:
* id: 1
* title: Book 1
* img: 1
* category_id: 1
* form: ebook
* isbn: 123456789
* summary: Book 1 Summary
* detail: Book 1 Detail
* author: Author 1
* pages: 100
* contents: Book 1 Contents
* price: 10000
* pub_date: 2021-01-01
* category_name: IT
* likes: 10
* liked: true
* 404:
* description: 해당하는 도서가 존재하지 않을 때 반환합니다.
* content:
* application/json:
* example:
* message: 해당하는 도서가 존재하지 않습니다.
* 500:
* description: 서버 에러
* content:
* application/json:
* example:
* message: 도서 조회 중 에러가 발생하였습니다.
*/
/**
* @swagger
* /category:
* get:
* summary: 카테고리 목록 조회
* description: 카테고리 목록을 조회합니다.
* tags: [Categories]
* responses:
* 200:
* description: 카테고리 목록 조회에 성공했을 때 응답합니다.
* content:
* application/json:
* example:
* - category_id: 1
* category_name: Fiction
* - category_id: 2
* category_name: Mystery
* 404:
* description: 카테고리가 존재하지 않을 때 응답합니다.
* content:
* application/json:
* example:
* message: 카테고리가 존재하지 않습니다.
* 500:
* description: 서버 에러
* content:
* application/json:
* example:
* error: 카테고리 조회 중 에러가 발생하였습니다.
*/
/**
* @swagger
* /books/{id}:
* post:
* summary: 좋아요 추가
* description: 도서에 좋아요를 추가합니다.
* tags: [Likes]
* parameters:
* - in: path
* name: id
* required: true
* description: 도서 ID
* schema:
* type: integer
* - in: body
* name: requestBody
* required: true
* description: 유저 ID
* schema:
* type: object
* properties:
* user_id:
* type: integer
* responses:
* 200:
* description: 좋아요 추가에 성공했을 때
* content:
* application/json:
* example:
* message: 좋아요 성공
* 400:
* description: 이미 좋아요한 도서에 좋아요를 추가하려고 할 때
* content:
* application/json:
* example:
* message: 이미 좋아요한 책입니다.
* 404:
* description: 도서나 유저가 존재하지 않을 때
* content:
* application/json:
* example:
* message: 존재하지 않는 유저입니다.
* 500:
* description: 서버 에러
* content:
* application/json:
* example:
* message: 서버 에러
* delete:
* summary: 좋아요 취소
* description: 도서에 좋아요를 취소합니다.
* tags: [Likes]
* parameters:
* - in: path
* name: id
* required: true
* description: 도서 ID
* schema:
* type: integer
* - in: body
* name: requestBody
* required: true
* description: 유저 ID
* schema:
* type: object
* properties:
* user_id:
* type: integer
* responses:
* 200:
* description: 좋아요 취소에 성공했을 때
* content:
* application/json:
* example:
* message: 좋아요 취소 성공
* 400:
* description: 좋아요하지 않은 도서에 좋아요를 취소하려고 할 때
* content:
* application/json:
* example:
* message: 좋아요하지 않은 책입니다.
* 404:
* description: 도서나 유저가 존재하지 않을 때
* content:
* application/json:
* example:
* message: 존재하지 않는 유저입니다.
* 500:
* description: 서버 에러
* content:
* application/json:
* example:
* message: 서버 에러
*/
/**
* @swagger
* /carts:
* post:
* summary: 장바구니에 도서 추가
* description: 장바구니에 도서를 추가합니다.
* tags: [Carts]
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* book_id:
* type: integer
* quantity:
* type: integer
* user_id:
* type: integer
* responses:
* 201:
* description: 장바구니에 도서 추가 성공했을 때
* content:
* application/json:
* example:
* message: 장바구니에 도서가 추가되었습니다.
* 200:
* description: 장바구니에 이미 도서가 담겨있을 때
* content:
* application/json:
* example:
* message: 이미 장바구니에 담긴 도서입니다. 원하시는 수량만큼 장바구니에 담긴 도서의 수량이 증가하였습니다.
* 400:
* description: 존재하지 않는 유저일 때
* content:
* application/json:
* example:
* message: 존재하지 않는 유저입니다.
* 404:
* description: 도서가 존재하지 않을 때
* content:
* application/json:
* example:
* message: 존재하지 않는 도서입니다.
* 500:
* description: 서버 오류
* content:
* application/json:
* example:
* message: 장바구니 추가 중 문제가 발생하였습니다.
*
* get:
* summary: 장바구니 조회
* description: 장바구니를 조회합니다.
* tags: [Carts]
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* user_id:
* type: integer
* selected:
* type: array
* items:
* type: integer
* responses:
* 200:
* description: 장바구니 조회 성공했을 때
* content:
* application/json:
* example:
* - id: 1
* book_id: 123
* title: 'Book Title'
* summary: 'Book Summary'
* quantity: 2
* price: 20000
* - id: 2
* book_id: 456
* title: 'Another Book Title'
* summary: 'Another Book Summary'
* quantity: 1
* price: 20000
* 404:
* description: 장바구니에 담긴 도서가 없을 때
* content:
* application/json:
* example:
* message: '장바구니에 담긴 도서가 없습니다.'
* 500:
* description: 서버 오류
* content:
* application/json:
* example:
* message: '장바구니 조회 중 문제가 발생하였습니다.'
*/
/**
* @swagger
* /carts/{id}:
* delete:
* summary: 장바구니 도서 삭제
* description: 장바구니 도서를 삭제합니다.
* tags: [Carts]
* parameters:
* - in: path
* name: id
* required: true
* description: 장바구니 도서 id
* schema:
* type: integer
* responses:
* 200:
* description: 장바구니 도서 삭제 성공했을 때
* content:
* application/json:
* example:
* message: '장바구니에서 도서가 삭제되었습니다.'
* 404:
* description: 존재하지 않는 장바구니 도서일 때
* content:
* application/json:
* example:
* message: '존재하지 않는 장바구니 도서입니다.'
* 500:
* description: 서버 오류
* content:
* application/json:
* example:
* message: '장바구니 도서 삭제 중 문제가 발생하였습니다.'
*/