-
typeorm 기본 구조 만들기 (5) - swagger공부하기/node.js 2022. 1. 24. 17:31
예제 git : https://github.com/kboysm/typeorm_study
typeorm 기본 예제에 swagger를 연결해 보겠습니다.
npm i swagger-ui-express
npm i swagger-jsdoc1. src/utils/swagger.ts 파일 생성
import express from "express"; import swaggerUi from "swagger-ui-express"; import "reflect-metadata"; import swaggerJSDoc from "swagger-jsdoc"; /** * Swagger를 사용하도록 한다. * @param app Express Application */ export function useSwagger(app: express.Application) { // Parse class-validator classes into JSON Schema: const options = { swaggerDefinition: { openapi: "3.0.0", info: { title: "test Api", version: "1.0.0", description: "docs", }, components: { securitySchemes: { bearerAuth: { type: "http", scheme: "bearer", bearerFormat: "JWT", }, }, }, security: [ { bearerAuth: [], }, ], }, schemes: ["http", "https"], servers: [ { url: "http://localhost:4000", }, ], apis: ["*/swagger/**/*Sw.yaml"], }; const specs = swaggerJSDoc(options); app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(specs)); }
2. app.ts 파일에서 위에 만든 스웨거 함수를 임포트합니다.
import { useSwagger } from "./utils/swagger";
3. app.ts파일의 createExpressServer함수에서 useSwagger를 사용한다.
useSwagger(this.app);
4. src/swagger/user/findAllSw.yaml 파일을 생성한다.
tags: - name: User description: User API paths: /user/findall: get: tags: - User summary: Find All User parameters: - name: limit in: query required: false description: rowPerPage schema: type: integer - name: pageNo in: query required: false description: pageNumber schema: type: integer responses: 200: description: "OK" content: application/json: schema: type: object properties: error: type: boolean description: error 체크 example: false totalCount: type: integer description: 전체 User의 수 example: 10 totalPage: type: integer description: 전체 페이지, 의미 없는 totalPage는 음수처리 example: 1 msg: type: string description: 메시지 example: User 목록을 찾는데 성공했습니다. items: type: array items: properties: id: type: integer description: user id example: 1 email: type: string description: 노출 우선 순위 example: test@google.com userInfoId: type: string description: userInfo id example: 1 userInfo: type: object properties: id: type: integer description: user info id example: 1 address: type: string description: user address example: 대한민국 서울~ name: type: string description: user name example: tom age: type: int description: user age example: 25 500: description: "Server Error" schemes: - https - http
결과:
jwt 토큰의 경우 swagger 문서의 우측 상단 Authorize버튼에 발급 받은 엑세스 토큰값만 넣고 사용하시면 되겠습니다.
'공부하기 > node.js' 카테고리의 다른 글
NestJs 설문조사 미니 프로젝트 (0) 2023.01.31 nodejs backend 면접 질문 정리 (0) 2023.01.18 typeorm 기본 구조 만들기 (4) - auth,jwt (0) 2022.01.24 typeorm 기본 구조 만들기 (3) - repository, service, controller (0) 2022.01.24 typeorm 기본 구조 만들기 (2) - app, index 분리 (0) 2022.01.16