<目次>
(1) Swaggerとは?APIのドキュメント生成方法(SwaggerのHello World)をご紹介
やりたいこと
概要
(1-1) STEP1:Node.js (含むnpm)のインストール
(1-2) STEP2:Expressおよびswagger-ui-expressをインストールします。
(1-3) STEP3:app.jsファイルを作成する
(1-4) STEP4:swagger.jsonファイルを作成
(1-5) STEP5:疎通
(1) Swaggerとは?APIのドキュメント生成方法(SwaggerのHello World)をご紹介
やりたいこと
背景/概要
背景
Swaggerのサービスが生まれた背景として、以下の点が挙げられる。
・①APIの標準化不足:開発者によって、開発スタイルが異なり、APIの互換性や一貫性が不足していた
→(例) エンドポイント、エラーレスポンスの形式)
・②ドキュメント化が難しい:APIの動作を記述する効果的なツールが無く、開発者がAPIの仕様を理解し辛い
→(例) パラメータや戻り値の型が不明、発生するエラーの記述が無いドキュメントなど)
・③クロスプラットフォーム対応:異なる開発言語やプラットフォーム間で、互換性の確保が困難
→(例) 特有の認証方法や、.NET等のフレームワーク対応など
・④クライアントSDKの生成:APIからクライアントSDK
→(例) Swaggerの文脈ではAPI仕様からAPIを操作するためのライブラリ等を自前で作成する必要がある
概要
(1-1) STEP1:Node.js (含むnpm)のインストール
> node -v
(1-2) STEP2:Expressおよびswagger-ui-expressをインストールします。
> cd [作業ディレクトリ] > npm install express swagger-ui-express
added 59 packages in 4s 7 packages are looking for funding run `npm fund` for details
(1-3) STEP3:app.jsファイルを作成する
// expressモジュールを読み込む const express = require('express'); // swagger-ui-expressモジュールを読み込む const swaggerUi = require('swagger-ui-express'); // swagger.jsonファイルを読み込む // このファイルはAPIの仕様を定義し、Swagger UIで表示されます。 const swaggerDocument = require('./swagger.json'); // Expressアプリケーションを作成する const app = express(); // '/api-docs'エンドポイントでswagger-uiを利用するためのミドルウェアを設定する // swagger-ui-expressモジュールのserve関数とsetup関数を使用して、swaggerDocument(swagger.jsonファイル)を提供します。 // つまり、'/api-docs'エンドポイントにアクセスすると、Swagger UIが表示され、swaggerDocumentに記載されたAPI仕様が表示されます。 app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument)); // '/hello'エンドポイントでGETリクエストを処理するハンドラを設定する app.get('/hello', (req, res) => { res.send('Hello World!'); }); // アプリケーションをポート3000でリッスンし、サーバーを起動します。 app.listen(3000, () => { console.log('Example app listening on port 3000!'); });
(1-4) STEP4:swagger.jsonファイルを作成
{ "swagger": "2.0", "info": { "title": "Hello World API", "description": "A simple example of a RESTful API using Swagger", "version": "1.0.0" }, "basePath": "/", "paths": { "/hello": { "get": { "summary": "Say Hello", "description": "Returns a simple greeting message", "produces": ["text/plain"], "responses": { "200": { "description": "OK", "schema": { "type": "string" } } } } } } }
(1-5) STEP5:疎通
> node app.js
(図512)
↓
(図412)