๐Ÿ“š Fastify์—์„œ swagger ์‚ฌ์šฉํ•˜๊ธฐ

๋™๋™ยท2023๋…„ 9์›” 1์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
5/13
post-thumbnail

๐Ÿ“— Swagger๋ž€?

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  API๋ฅผ ๋ฌธ์„œํ™”ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ(?)์ด๋‹ค

์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ๊ณ , ๊ฐ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  API๋“ค์„ ์—ฌ๊ธฐ์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค !
๋งŒ๋“ค๊ณ  ๋‚˜์„œ ์Šค์›จ๊ฑฐ๋งŒ ์“ฐ๊ณ  ํฌ์ŠคํŠธ๋งจ์€ ๊ฑฐ์˜ ์•ˆ์“ด ๊ฒƒ ๊ฐ™์Œ..

๐Ÿ“• Fastify์—์„œ swagger ์‚ฌ์šฉํ•˜๊ธฐ

fastify์—์„œ swagger๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ตฌ๊ธ€๋ง์„ ํ•˜๋ฉด ์ž์„ธํžˆ ๋˜๋Š” ์ž˜ ์•ˆ๋‚˜์˜จ๋‹ค...

  • ๋ณธ์ธ์˜ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชจ๋“ˆ์„ ์„ค์น˜ํ–ˆ๋‹ค.

npm install @fastify/swagger @fastify/swagger-ui
  • ์ดํ›„ plugins ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด๋ถ€์— swagger.js๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค.

  • swagger.js์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋“ˆ๋“ค์„ ๋ถˆ๋Ÿฌ์™€์ค€๋‹ค !

const fp = require('fastify-plugin');
const swagger = require('@fastify/swagger');
const swaggerUi = require('@fastify/swagger-ui');
  • ์ดํ›„ swagger ๋ฐ swagger-ui ์ƒ์„ฑ

swagger

swagger ์ƒ์„ฑ ์‹œ title, description, version์˜ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค

swagger-ui

routePrefix : swagger๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์—”๋“œํฌ์ธํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค !
uiConfig : swagger์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ ์˜ต์…˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„

swagger์— ๋‚ด๊ฐ€ ๋งŒ๋“  API ์ถ”๊ฐ€ํ•˜๊ธฐ

์œ„์™€ ๊ฐ™์ด ์„ค์ •์„ ํ–ˆ๋‹ค๋ฉด swagger์— ์ด๋ฏธ ๋‚ด๊ฐ€ ๋งŒ๋“  API๋“ค์ด ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜์–ด์žˆ์ง€๋งŒ,
๊ทธ API์— ํ•„์š”ํ•œ parameter๊ฐ’๋“ค์€ ์„ค์ •์ด ์•ˆ๋˜์žˆ์„ ๊ฒƒ์ด๋‹ค...

๊ทธ๋ž˜์„œ api์˜ router๋ถ€๋ถ„์˜ ์—”๋“œํฌ์ธํŠธ ๋’ค์— JSON schema๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค !

๐Ÿ“˜ swagger ์‚ฌ์šฉํ•˜๋ฉฐ ๋Š๋‚€ ์ 

  • ๋งŒ๋“ค๊ณ  ๋‚œ ํ›„ ํฌ์ŠคํŠธ๋งจ๋ณด๋‹ค ํ›จ์”ฌ ํŽธํ•จ์„ ๋Š๊ผˆ๋‹ค.

  • fastify์˜ ๊ฒฝ์šฐ, swagger๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ž๋ฃŒ๊ฐ€ ๋งŽ์ด ๋ถ€์กฑํ•œ ๊ฑฐ ๊ฐ™๋‹ค... ๐Ÿฅ•

  • ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€์˜ ์†Œํ†ต์ด ํ›จ์”ฌ ์‰ฝ๋‹ค !

profile
โœ๏ธ ๋„์ ๋„์ 

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด