Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Next.js LearnのアプリでDB連携してる箇所をAPI化して、Swagger化してみた

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Next.js LearnのアプリでDB連携してる箇所をAPI化して、Swagger化してみた

Avatar for caad TakaraShinya

caad TakaraShinya

April 22, 2024

More Decks by caad TakaraShinya

Other Decks in Technology

Transcript

  1. 調査の結果、下記のような理由から Next.js を選択🙇‍♀ ゼロコンフィグ機能 最低限の設定を自動でやってくれる ファイルベースルーティング機能 開発にあたり、ルーティング設定が不要でわかりやすい フロントもバックエンドも両方対応でき、API 作成も簡単 利用技術が統一可能

    Netflix でも導入されたり、継続して開発が進行 Vercel が メンテナでもあり、今後も進化が期待できる CyberAgent グループでもよく利用され、ノウハウ共有を受けやすい 高度な技術ノウハウ共有も受けられ、育成にも活かせる ※ 弊社では 0 -> 1 で開発する案件が多いことやフロントとバックエンドと複雑化せず、リリース後に引き継ぎが しやすいことも考慮して選定
  2. 3️⃣ どうやったの❓ 1. Next.js Learn が完了済みの状態からAPI 化する Next.js 14 のため、App

    Router でのAPI 化(Routing: Route Handlers | Next.js を利用) Swagger 化のため、NPM モジュールインストール(差分はこちら👇余計なものも入ってますが、、、、 💦)
  3. 3️⃣ どうやったの❓ 2. インストールした next-swagger-doc のGithub のREADME に従い、設定を行う Next.js 13

    以降に関しての対応方法が記載されていてハートフル💖 jellydn/next-swagger-doc ` `
  4. 3️⃣ どうやったの❓ 3. 下記のように、 app/api/hello/route.ts 内でSwagger Comment を記載する感じ そのため、yaml ファイルは不要で作れる

    ` ` 1 2 // file: app/api/hello/route.ts 3 /** 4 * @swagger 5 * /api/hello: 6 * get: 7 * description: Returns the hello world 8 * responses: 9 * 200: 10 * description: Hello World! 11 */ 12 export async function GET(_request: Request) { 13 // Do whatever you want 14 return new Response('Hello World!', { 15 status: 200, 16 }); 17 }
  5. 3️⃣ どうやったの❓ 5. ここでちょっとした問題発生💦 Next.js Learn のアプリでAPI 化はされてるが、Swagger Comment 自分で書くの❓💦

    API できてるのに、、、、自動化できないのかなー🤔 ・・・・・・そこに救世主現る❗👀
  6. 3️⃣ どうやったの❓ 7. あとはAPI 化したものをCURL して、cURL to Swagger を使ってSwagger Comment

    としてコピペするだけ👍 8. ちゃーんとVercel へもデプロイして、Swagger UI を確認👍 Next Swagger API Example