[Node.js] Swagger로 api docs 작성하기

2023. 6. 15. 09:41·Node.js
목차
  1. 1. swagger 설치
  2. 2. swagger 파일 설정
  3. 1) swagger.js 파일 만들기
  4. swaggerDefinition 구성 요소
  5. 2) app.js에 swagger.js 정의하기
  6. 3) api-docs 경로 확인하기
  7. 3. API 문서화하기
  8. 문서 자세히 보기
  9. 👇🏻 참고
728x90
반응형

우연히 어떤 글을 보고 swagger로 api docs를 작성할 수 있다는 것을 알게 되었다. 혼자 프로젝트 진행할 때 api가 너무 많아서 노션으로 일일이 작성해서 봤었는데 이 방법이 더 편리할 것 같아 한번 해보고 글로 작성할려고 한다.

1. swagger 설치

이전에 있던 express 프로젝트를 가져와 아래의 모듈을 설치한다.

npm install swagger-jsdoc swagger-ui-express --save-dev
  • swagger-ui-express : API 문서 UI 렌더링을 위한 패키지
  • swagger-jsdoc: Swagger 태그 주석을 추가해 API 문서화를 위한 패키지
  • 개발할 때 보기 위함이기에 —save-dev옵션을 준다.

2. swagger 파일 설정

1) swagger.js 파일 만들기

// 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: "유희왕의 포트폴리오",
      description:
        "Next.js를 기반으로 한 포트폴리오로 notion api 사용하여 db 기능 사용 ",
    },
    servers: [
      {
        url: "<http://localhost:3001>", // 요청 URL
      },
    ],
  },
  apis: ["./*.js"], //Swagger 파일 연동
}
const specs = swaggereJsdoc(options)

module.exports = { swaggerUi, specs }
반응형

swaggerDefinition 구성 요소

  • openapi : 사용하는 Open API의 버전, 공식문서에 버전이 나와있다. 편한 버전을 선택하여 이용하면 된다.
  • info: API에 필요한 정보
    • title: API 제목
    • version: API 버전
    • description: API 상세정보
  • servers: API에 대한 기본 URL, 배열로 여러 URL 정의 가능 (host, basePath 이용하는 방법도 있음)
  • components: 모든 API에 사용할 공통 컴포넌트
  • schemes: 가능한 통신 방식 ex) ["http"], ["https"], ["http", "https"]
  • defomotopms: DB 모델 정의
  • apis: 어노테이션을 포함한 파일위치, 위치를 잘못 설정하면 해당 파일에 대한 설명이 안보인다.

해당 파일은 편한 곳에 추가하여 옵션을 정의하면 된다.

2) app.js에 swagger.js 정의하기

//app.js
const { swaggerUi, specs } = require("./swagger")
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(specs))

아까 작성한 swagger파일을 가져와 app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(specs)) 부분에서 UI와 옵션을 Express Router 환경에 연결한다.

3) api-docs 경로 확인하기

swagger화면
swagger화면

/api-docs 경로로 접속하면 위와 같은 페이지가 보인다.

3. API 문서화하기

/**
 * @swagger
 * tags:
 *   name: Slack
 *   description: slack에 메시지 보내기
 */

파일을 하나 따로 만들어 위와 같은 주석을 작성해준다. @swagger 태그를 적용하면 해당 주석은 Swagger정보를 작성할 수 있다.

정보를 작성한 화면
정보를 작성한 화면

문서 자세히 보기

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

/**
 * @swagger
 * paths:
 *  /slack:
 *    get:
 *      summary: "slack으로 메시지 보내기"
 *      description: "Post방식으로 메시지 보내기 요청"
 *      tags: [Slack]
 *      responses:
 *        "200":
 *          description: 메시지 보내기 성공
 *          content:
 *            application/json:
 *              schema:
 *                type: object
 *                properties:
 *                    ok:
 *                      type: boolean
 *                    users:
 *                      type: object
 *                      example:
 *                          [
 *                            { "name": "유희왕", "phone": "01010101012", "email": "dbgmldhkd@gmail.com", "text": "멋져부러" },
 *                            { "name": "유희왕언니", "phone": "01010101012", "email": "dbgmldhkd@gmail.com", "text": "집들어와라" },
 *                            { "name": "유희왕마미", "phone": "01010101012", "email": "dbgmldhkd@gmail.com", "text": "딸 오디니" },
 *                          ]
 */
module.exports = router

해당 api에 대한 정보를 자세히 적으면 펼쳐서 내용을 확인할 수 있다.

get형식을 작성한 화면
get형식을 작성한 화면
결과물이 나오는 화면
결과물이 나오는 화면

👇🏻 참고

https://any-ting.tistory.com/105

https://gngsn.tistory.com/69

https://doqtqu.tistory.com/283

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
  1. 1. swagger 설치
  2. 2. swagger 파일 설정
  3. 1) swagger.js 파일 만들기
  4. swaggerDefinition 구성 요소
  5. 2) app.js에 swagger.js 정의하기
  6. 3) api-docs 경로 확인하기
  7. 3. API 문서화하기
  8. 문서 자세히 보기
  9. 👇🏻 참고
'Node.js' 카테고리의 다른 글
  • [Node.js] socket.io으로 양방향 통신 해보기
  • [Node.js] 가짜 api 서버 만들기
  • [Node.js] Joi사용해서 유효성 검사하기
  • [Node.js] knex로 SQL문 작성하기
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • sequelize
  • Props
  • MySQL
  • useEffect
  • 장고
  • SSR
  • Express
  • mosquitto
  • 플러터
  • 쿠버네티스
  • 노드
  • 도커
  • next.js
  • 오블완
  • Vue.js
  • Django
  • 넥스트
  • supabase
  • 티스토리챌린지
  • AWS
  • node.js
  • Create
  • 리액트
  • firebase
  • docker
  • flutter
  • error
  • Kubernetes
  • React
  • NEXT

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[Node.js] Swagger로 api docs 작성하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.