본문 바로가기
Node.js

Node.js Swagger 적용

by Mecodata 2023. 6. 3.

Swagger.js

const swaggerUi = require("swagger-ui-express");
const swaggereJsdoc = require("swagger-jsdoc");
const options = {
  swaggerDefinition: {
    info: {
      title: "", // 프로젝트 제목
      version: "1.0.0", // 프로젝트 버전
      description: "This is project" // 프로젝트 설명
    },
    host: "localhost:3000", // 요청 URL
    basePath: "/",
  },
  apis: ["./routes/*.js"], //@Swagger 적용한 js 파일 연동 
  // (파일 경로 입력은 swaggerUi, specs를 import하여 사용하는 파일 위치 기준 => 주로 index.js)
};
const specs = swaggereJsdoc(options);

module.exports = { swaggerUi, specs };

index.js

// Swagger import 기본 세팅
const { swaggerUi, specs } = require("./swagger/swagger");
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(specs));

API Swagger 적용 예시 (yml 형식)

/**
   * @swagger # Swagger 적용 선언
   * /member/login: # API URL 주소 
   *    post: # HTTP 메소드 종류
   *      tags: [member] # 태그 종류 => 대괄호([])를 씌워 입력해야 함
   *      summary: 로그아웃 # 해당 API 설명 설정
   *      parameters: # 입력받을 파라미터 설정
   *       - name: wallet # 파라미터 이름
   *         in: body # 조회 방식(query, body, params)
   *         description: # 파라미터 설명
   *         required: true # 필수 입력인지 설정
   *         schema: # 파라미터 구조 설정
   *           type: object # json형식으로 입력받을 경우
   *           properties: # json에 있는 각 파라미터 설정
   *             wallet: # 파라미터는 response처럼 example 적용 불가
   *               type: string
   *      responses: # HTTP 코드마다 response 설정 가능
   *        200:
   *          description: Sucess # 설명
   *          schema: # response 값의 구조 설정
   *            properties: # 이 경우에는 {msg: "정상 처리", state: 0, result: true}
   *              msg:
   *                type: string
   *                example: 정상 처리 
   *              state:
   *                type: number
   *                example: 0
   *              result:
   *                type: boolean
   *                example: true
   */
   router.post("/login", (req, res) => {}) // member 라우터(/member)

'Node.js' 카테고리의 다른 글

Node.js 클러스터  (0) 2023.08.28
Node.js 정의 및 장단점  (0) 2023.06.06
Socket.io  (0) 2023.05.31
Nodemon/PM2  (0) 2023.05.30
Winston (Node.js 로그 관리)  (0) 2023.05.26

댓글