๐Ÿ› ๏ธ Swagger UI์™€ Firebase๋ฅผ ์ด์šฉํ•œ API ๋ฌธ์„œ ์ž‘์„ฑ

๊น€๋™ํ˜ยท2023๋…„ 6์›” 12์ผ
post-thumbnail

๐Ÿ› ๏ธ Swagger UI์™€ Firebase๋ฅผ ์ด์šฉํ•œ API ๋ฌธ์„œ ์ž‘์„ฑ

์˜ค๋Š˜์€ ํšŒ์‚ฌ์—์„œ ์„ ๋ฐฐ๋“ค๊ณผ ๋™๋ฃŒ๋“ค๊ณผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ธŒํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์„ ๋ฐฐ๋‹˜์˜ ๊ถŒ์œ ๋กœ Swagger UI๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ ์—ญํ• ์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋กœ ํŽ‘์…˜์„ ๋งŒ๋“œ๋Š” ์—ญํ• ์ธ๋ฐ์š”. ๊ทธ๋ž˜์„œ API ๊ด€๋ จ ์„œ๋ฅ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”๋ฐ ์ฒ˜์Œ์— GitLab์— MarkDown์œผ๋กœ Api์„œ๋ฅ˜๋ฅผ ๋งŒ๋“ค๋‹ค๋ณด๋‹ˆ ์ œ๋Œ€๋กœ ์ •๋ฆฌ๊ฐ€ ์•ˆ๋˜๊ณ , ์‹œ๊ฐ„๋„ ๋งŽ์ด ๊ฑธ๋ฆฌ๊ฒŒ๋˜์–ด์„œ ๊ฐ™์ด ํ”„๋กœ์ ํŠธํ•˜๋Š” ๋ฆฌ๋”์ด์‹  ์„ ๋ฐฐ๋‹˜๊ป˜์„œ Swagger UI๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ผ๋Š” ๊ถŒ์œ ๋ฅผ ํ†ตํ•ด ์ผ๋‹จ ์„ค์น˜ํ•˜๊ณ  ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณผ๊ป˜์š”.

๐Ÿ’ป Swagger UI ์„ค์น˜ ๋ฐ ์‹คํ–‰

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์ €๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํ™˜๊ฒฝ์€ ์ผ๋‹จ mac๊ธฐ์ค€์ด๊ณ  ์ €๋Š” ๊นƒ์—์„œ ํด๋ก ์„ ํ•ด์„œ Swagger UI๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ–ˆ์–ด์š”. ์•„๋ž˜๋Š” ์ด๋ฅผ ์œ„ํ•œ ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

  1. Git์„ ์‚ฌ์šฉํ•˜์—ฌ Swagger-UI ์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•˜์„ธ์š”:
    git clone https://github.com/swagger-api/swagger-ui.git
  2. ํด๋ก ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์„ธ์š”:
    cd swagger-ui
  3. ์›น ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, Node.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, http-server๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
    npm install -g http-server
    http-server dist
  4. ์ด์ œ ํ•„์š”ํ•œ JSON ๋˜๋Š” YAML ํŒŒ์ผ์„ dist ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณต์‚ฌํ•˜์„ธ์š”:
    cp ../path/to/swagger.json dist/
    cp ../path/to/swagger.yaml dist/
  5. ๋งˆ์ง€๋ง‰์œผ๋กœ, distํด๋” ๋‚ด์˜ index.html์„ ํŽธ์ง‘ํ•˜์—ฌ url ์†์„ฑ์„ swagger.json ๋˜๋Š” swagger.yml ํŒŒ์ผ์— ๋Œ€์‘ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜์„ธ์š”. ๋ณ€๊ฒฝ ํ›„ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์›น ํŽ˜์ด์ง€์—์„œ ๋‚˜๋งŒ์˜ Swagger ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์›น ์„œ๋ฒ„๋ฅผ ์ข…๋ฃŒํ•˜๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ Ctrl + C๋ฅผ ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค.

๐Ÿ”ฅ Firebase ํ˜ธ์ŠคํŒ… ์„ค์ • ๋ฐ ์‚ฌ์šฉ

Firebase ํ˜ธ์ŠคํŒ…์„ ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•˜์„ธ์š”.

  1. ๋จผ์ €, Node.js์™€ npm์ด ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด nodejs.org์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Firebase CLI๋ฅผ ๊ธ€๋กœ๋ฒŒ๋กœ ์„ค์น˜ํ•˜์„ธ์š”:
    npm install -g firebase-tools
  3. Firebase ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ์„ธ์š”:
    Firebase ์ฝ˜์†”์—์„œ '์ƒˆ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ'๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”.
  4. ์ด์ œ ๋กœ์ปฌ์—์„œ Firebase์— ๋กœ๊ทธ์ธํ•˜์„ธ์š”:
    firebase login
  5. Firebase ์„ค์ • ํŒŒ์ผ์„ ์ดˆ๊ธฐํ™”ํ•˜์„ธ์š”:
    firebase init
  6. ์ด์ œ Firebase์— ๋ฐฐํฌํ•  ํŒŒ์ผ๋“ค์ด ์žˆ๋Š” ํด๋”์ธ dist ํด๋”๋กœ ์ด๋™ํ•˜์„ธ์š”. ํ•ด๋‹น ํด๋” ์•ˆ์—๋Š” index.html ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  7. Firebase์— ๋ฐฐํฌํ•˜์„ธ์š”:
    firebase deploy

๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด URL์ด ์ƒ์„ฑ๋˜์–ด ๋ฐฐํฌ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Firebase ํ˜ธ์ŠคํŒ…์„ ํ†ตํ•ด Swagger UI๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. URL์€ ๋ณดํ†ต https://<project-id>.firebaseapp.com ๋˜๋Š” https://<project-id>.web.app ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์—๋Š” Swagger UI๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์˜ฌ๋ ค๋ณด๋„๋ก ํ• ๊ป˜์š”^^

profile
๐Ÿฑ ๋„์ฟ„์—์„œ ํ™œ๋™ ์ค‘์ธ ์›น ๊ฐœ๋ฐœ์ž ๐Ÿ‡ฏ๐Ÿ‡ต๐Ÿ’ป ๐Ÿง‘โ€๐Ÿ’ป ์ตœ๊ทผ์—๋Š” ์š”์ฆ˜IT์—์„œ ์ž‘๊ฐ€๋กœ๋„ ํ™œ๋™ ์ค‘์ž…๋‹ˆ๋‹ค! ๐Ÿ“ ์š”์ฆ˜IT ๊ธ€ ๋ชจ์Œ: https://yozm.wishket.com/magazine/@donghyuk65/

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