웹 풀사이클 데브코스 TIL 9주차 DAY 4

갱갱·2024년 1월 22일
0

데브코스 TIL

목록 보기
23/24
post-thumbnail

프로그래머스 데브코스, 국비지원교육, 코딩부트캠프

🚩 프로그래머스 데브코스 웹 풀사이클 과정 9주차 DAY 4


쉬엄쉬엄 쉬어갔던 날... 패키지를 조금 수정하고 swagger 문서를 작성한 게 전부다. 머쓱... swagger 문서를 작성할 때는 Chat GPT의 도움을 조금 받았다. 기존 작성한 코드를 보여주면서 틀을 짜달라고 했더니 짠 하고 짜주더라. 물론 내가 자잘한 부분은 수정을 했다.

💡 Swagger 문서 작성하기


  1. 전체 도서 조회
/**
 * @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: 도서 조회 중 에러가 발생하였습니다.
 */

  1. 개별 도서 조회
/**
 * @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: 도서 조회 중 에러가 발생하였습니다.
 */

  1. 카테고리 조회
/**
 * @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: 카테고리 조회 중 에러가 발생하였습니다.
 */

  1. 좋아요 추가 및 취소
/**
 * @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: 서버 에러
 */

  1. 장바구니 담기 및 조회
/**
 * @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: '장바구니 조회 중 문제가 발생하였습니다.'
 */

  1. 장바구니 삭제
/**
 * @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: '장바구니 도서 삭제 중 문제가 발생하였습니다.'
 */

profile
괜찮은 개발자가 되어 보자

0개의 댓글