Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

Swaggerとは?APIのドキュメント生成方法(SwaggerのHello World)をご紹介

投稿日:2023年7月26日 更新日:

 

<目次>

(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の概要を理解する
・Swaggerの”Hello World”(簡単なRESTful APIを作成し、Swaggerでドキュメント化)を疎通する

目次にもどる

背景/概要

背景

Swaggerのサービスが生まれた背景として、以下の点が挙げられる。
・①APIの標準化不足:開発者によって、開発スタイルが異なり、APIの互換性や一貫性が不足していた
 →(例) エンドポイント、エラーレスポンスの形式)
・②ドキュメント化が難しい:APIの動作を記述する効果的なツールが無く、開発者がAPIの仕様を理解し辛い
 →(例) パラメータや戻り値の型が不明、発生するエラーの記述が無いドキュメントなど)
・③クロスプラットフォーム対応:異なる開発言語やプラットフォーム間で、互換性の確保が困難
 →(例) 特有の認証方法や、.NET等のフレームワーク対応など
・④クライアントSDKの生成:APIからクライアントSDK
 →(例) Swaggerの文脈ではAPI仕様からAPIを操作するためのライブラリ等を自前で作成する必要がある

概要

・SwaggerはRESTful APIのドキュメント化とデザインのためのフレームワークです。
・Swaggerは現在は「OpenAPI Specification」とも呼ばれています。
・APIの仕様、リクエストとレスポンスの形式、認証方法などの詳細な情報をドキュメンテーションできます。
・APIを実行するためのクライアントコードを自動生成をサポートする等、APIのテストも支援できます。

(1-1) STEP1:Node.js (含むnpm)のインストール

・①Node.jsのダウンロード
(図111)
・②インストール
(図112①)
~中略~
・③インストール完了
(図112②)

・④完了確認
> node -v
(図113)

(1-2) STEP2:Expressおよびswagger-ui-expressをインストールします。

・①swagger-ui-expressのインストール
> cd [作業ディレクトリ]
> npm install express swagger-ui-express
(図131)
(図132)
(出力結果例)
added 59 packages in 4s

7 packages are looking for funding
  run `npm fund` for details

(1-3) STEP3:app.jsファイルを作成する

・①空の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!');
});
(図311)

(1-4) STEP4:swagger.jsonファイルを作成

・①空の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"
            }
          }
        }
      }
    }
  }
}
(図411)

(1-5) STEP5:疎通

・①下記コマンドでアプリを実行
> node app.js
(図511)

・②「http://localhost:3000/api-docs」にアクセスし、Swagger UIを表示

(図512)

・③”Hello World”エンドポイントにアクセスするには、http://localhost:3000/helloにアクセスします。

(図412)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Confluenceでサイドバーを設置し、スクロールバーに追従させる方法

  <目次> (1) Confluenceでサイドバーを設置し、スクロールバーに追従させる方法  (1-0) やりたいこと  (1-1) 設定手順  (1-2) トライ&エラー備忘メモ:HT …

Outlookの代行機能(代理人アクセス)の概要および出来る事/出来ない事の整理

  <目次> (1) Outlookの代行機能(代理人アクセス)の概要および出来る事/出来ない事の整理  (1-1) 「代理人アクセス機能」の概要  (1-2) 「代理人アクセス機能」の権限 …

LinkedIn APIの使い方について(PythonでAPIコール疎通させるまで)

  <目次> (1) LinkedIn APIの使い方について(PythonでAPIコール疎通させるまで)  (1-1) STEP1:【任意】企業・団体ページの作成  (1-2) STEP2 …

非機能要件とは?を極力分かりやすくご紹介

  <目次> (1) 非機能要件とは?を極力分かりやすくご紹介  (1-1) 機能要件とは?(Functional Requirement)  (1-2) 非機能要件とは?(Non-Func …

CelonisのコネクタでOracle DBと接続を試した際の設定手順について

  <目次> (1) CelonisのコネクタでOracle DBと接続を試した際の設定手順について  (1-0) 概要  (1-1) STEP1:Data Poolの設定  (1-2) S …

  • English (United States)
  • 日本語
Top