320x100
320x100

Swagger 설치

https://2mukee.tistory.com/790

 

swagger에 대해 알아보자

swagger : Rest API에 대한 문서화 및 관리, 테스트를 지원하는 오픈 소스 프레임워크 (Open Api Specification, OAS) : 코드 몇 줄만으로 API 문서를 쉽게 만들 수 있고, 테스트할 수 있는 UI를 제공하여 편리하

2mukee.tistory.com

 

 

 

 

 

Express와 Swagger 연동

- 필요 패키지 설치

// 필요 라이브러리들을 개발 환경에 종속되게 설치
// swagger-jsdoc: jsdoc 주석으로 Swagger API 문서를 표현하기 위한 라이브러리
// swagger-ui-express: swagger-ui와 express를 연결하기 위한 라이브러리
npm install swagger-jsdoc swagger-ui-express -save-dev

 

-  Swagger 환경설정

: swagger/swagger.js 파일 생성

const swaggerUi = require("swagger-ui-express")
const swaggereJsdoc = require("swagger-jsdoc")

const options = {
  swaggerDefinition: {
    openapi: "3.0.0",
    info: {
      version: "1.0.0",
      title: "2mukee 연구소",
      description:
        "프로젝트 설명",
    },
    servers: [
      {
        // Express 서버 URL
        url: "http://localhost:3000",
      },
    ],
  },
  // Express Router와 Swagger 파일을 연결
  apis: ["./routers/*.js", "./routers/user/*.js"],
}
const specs = swaggereJsdoc(options)

module.exports = { swaggerUi, specs }

 

- Express server에 Swagger 적용

// ... exress server 관련 부분 생략

// swagger 모듈 불러오기
const { swaggerUi, specs } = require("./swagger/swagger")

// swagger로 테스트를 수행하는 API URL 정의
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(specs))

// ... express server 관련 부분 생략

: 브라우저로 localhost:3000/api-docs에 접속하면 swagger UI가 나옴

 

- API에 Swagger 적용

const router = require("express").Router()
const user = require("./user")

/**
 * @swagger
 * tags:
 *   name: Users
 *   description: 유저 추가 수정 삭제 조회
 */
router.use("/user", user)

module.exports = router

: 이후 localhost:3000/api-docs에 접속하면 해당 API에 대한 정보가 출력됨

 

- 문서화

const userRouter = require("express").Router()
const userController = require("./user.controller")

/**
 * @swagger
 * paths:
 *  /api/user/users:
 *    get:
 *      summary: "유저 데이터 전체조회"
 *      description: "서버에 데이터를 보내지 않고 Get방식으로 요청"
 *      tags: [Users]
 *      responses:
 *        "200":
 *          description: 전체 유저 정보
 *          content:
 *            application/json:
 *              schema:
 *                type: object
 *                properties:
 *                    ok:
 *                      type: boolean
 *                    users:
 *                      type: object
 *                      example:
 *                          [
 *                            { "id": 1, "name": "유저1" },
 *                            { "id": 2, "name": "유저2" },
 *                            { "id": 3, "name": "유저3" },
 *                          ]
 */
userRouter.get("/users", userController.getUsers)

module.exports = userRouter

: localhost:3000/api-docs에 접속하면 주석에 기입한대로 API의 스펙이 출력됨

 

 

 

 

 

 

 

Reference

 

[Swagger] Node.js Swagger API 문서화

- 개요 안녕하세요. 이번 시간에는 Node.js API 서버에서 Swagger를 활용한 문서화 작업을 해보는 시간을 가져보도록 하겠습니다. 기본적으로 프론트 앤드와 백앤드 개발자가 작업을 할 때 가장 많이

any-ting.tistory.com

 

300x250
728x90

'Programming > NodeJS' 카테고리의 다른 글

Express response 함수 비교  (0) 2024.01.20
nodejs 프로세스 관리 spawn vs exec  (0) 2024.01.17
swagger에 대해 알아보자  (0) 2023.08.27
ES-Lint와 Prettier를 활용한 코드 포매팅  (0) 2023.08.19
NodeJS 란?  (0) 2023.06.05