[AI스쿨] node js swagger연동하기
[AI스쿨] node js swagger연동하기 — #AI스쿨 #nodejsswagger AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다 학습법 ...
#AI스쿨 #nodejsswagger
AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다
학습법 이론
학습을 하기 이전, 명심해야할 학습법이 있다.
1.이해가지 않는다고 뒤돌아가 다시 보지 말 것
2.외우지 말라
=> 자주 봐서 외워짐을 당하라
=> 크롬을 통해 copy and paste하라
- 이해하는게 중요하다
=> 왜 생겨났는지?
=> 왜 사용하는지?
===> 응용이 가능해진다.
4.새로운 지식을 넣을땐 뇌를 비우자
node js에서 swagger사용하기
node js - swagger
이제 node js와 swagger를 연동해보겠습니다. 처음 접할때 너무나 어려운 내용이었기 때문에 최대한 상세히 적어보겠습니다. 서버는 express js를 사용합니다.
swagger 모듈설치
npm으로 설치해야할 패키지 목록입니다.
| npm install swagger-jsdocnpm install swagger-ui-express |
|---|
보통 swagger를 적용시킬 단계까지 왔다는 것은 기존에 express로 만든 서버가 있다고 생각됩니다. express로 구현한 서버 파일이름이 app.js로 가정하고 진행하겠습니다.
swagger 모듈불러오기
app.js와 같은 경로상에 swagger.js 파일을 만들어줍니다.
| import swaggerJsdoc from "swagger-jsdoc";import swaggerUi from "swagger-ui-express"; |
|---|
import문을 사용하여 모듈을 불러옵니다. 기존에 사용하던 require로 모듈을 불러왔을때 계속 오류가 나서 전체 코드를 import문으로 다 바꾸었습니다.
| ***export const options = { swaggerDefinition: { openapi: "3.0.3", info: { title: "Test API", version: "1.0.0", description: "Test API with express", }, servers: \[ { url: "http://localhost:4000", }, \], }, apis: \["/routes/\.js", "./swagger/\", "./models/\.js", "./app.js"\],};const specs = swaggerJsdoc(options);export default { swaggerUi, specs,}; |
|---|
export를 사용하여 swagger의 기본 option을 정의합니다. yaml파일 형태가아닌 json형태로 작성합니다. apis:\[\]에 swagger.js를 불러올 경로를 정확히 입력합니다. (./app.js)
마지막으로 설정한 options를 swaggerJsdoc안의 변수로 넣어주고 export해줍니다. (이제 해당 옵션은 모듈화되어 import한 곳에서 사용할 수 있습니다)
app.js에서 불러오기
이제 app.js로 돌아와서 모듈화된 swagger.js파일을 불러온 뒤
| import swagger from "./swagger.js";app.use( "/api-docs", swagger.swaggerUi.serve, swagger.swaggerUi.setup(swagger.specs, { explorer: true })); |
|---|
이후 app.js에서 swagger명세를 작성합니다. 이후 /api-docs로 라우터를 설정한뒤 위 코드를 입력합니다.
| /\\*** \* @swagger** \* paths:** \* /news/economy:** \* get:** \* tags: \[GET NEWS DATA\]** \* summary: 전체 economy 데이터조회** \* responses:** \* "200":** \* discription: 조회성공** \* contnet:** \ application:json \ \* /news/economy/{id}:** \* get:** \* tags: \[GET NEWS DATA by id\]** \* summary: id로 데이터 조회하기** \* parameters:** \* - name: id** \* schema:** \* type: integer** \* responses:** \* "200":** \* discription: 조회성공** \* content:** \ applicaion:json* **\/ |
|---|
위에 작성한 코드에는 주석이 없으니 yaml파일 작성법을 확인하면서 본인의 API명세를 작성하시면됩니다.
swagger 연동성공
우선 /api-docs 경로로 접속하니 swagger가 잘 적용된걸 볼 수 있습니다. 서버도 잘 적용되고 있고, 제가 위에서 명세한 그대로 GET요청 대한 설명이 잘나와있습니다.
서버에 연동된 데이터 역시 잘 불러와지는것을 볼 수 있습니다. (근데 id로 데이터 검색은 오류가나네요 ㅠㅠ)
node js - swagger연동 생각보다 너무 어려워서 쩔쩔 맸던 경험이 있습니다... 여러분들은 연동 잘 해내시길 바라며 궁금하신점은 댓글로 문의주시면 바로 바로 답장드리겠습니다!



