web-dev-qa-db-ja.com

既存のNodeJSサーバーのSwaggerドキュメントを生成する

Swagger Webサイト によると、2つのアプローチがあります。ボトムアップとトップダウンです。

Azure環境にデプロイする既存のNodeJSサーバーがあり、それはswaggerドキュメント(API APP)を必要とします。

コードを使用してswaggerを生成するツールを知っている人はいますか?チュートリアルを指すことができればさらに良いです。見つかりませんでした。

18
Ernani

このチュートリアル に従って、Swaggerを既存のエクスプレスアプリケーションに統合することは難しくありません。

通常、次の手順を実行できます。

  1. _package.json_に依存関係を追加し、_npm install_を実行してインストールします。依存関係は次のとおりです。

    _"dependencies": {
            "swagger-node-express": "~2.0",
            "minimist": "*",
            "body-parser": "1.9.x",
            ...
    }
    _
  2. Swagger-UI のZipプロジェクトをダウンロードし、distフォルダーをプロジェクトのルートディレクトリにコピーします。ディレクトリは次のようになります。

enter image description here

  1. _app.js_の最初に依存関係を導入します。

    _var argv = require('minimist')(process.argv.slice(2));
    var swagger = require("swagger-node-express");
    var bodyParser = require( 'body-parser' );
    _
  2. Swagger docのサブパスを設定します。

    _var subpath = express();
    app.use(bodyParser());
    app.use("/v1", subpath);
    swagger.setAppHandler(subpath);
    _
  3. _/dist_がエクスプレスで静的ファイルを提供できることを確認します:app.use(express.static('dist'));

  4. APIの情報を設定します。

    _swagger.setApiInfo({
        title: "example API",
        description: "API to do something, manage something...",
        termsOfServiceUrl: "",
        contact: "[email protected]",
        license: "",
        licenseUrl: ""
    });
    _
  5. Swagger UIに_/dist/index.html_を導入:

    _subpath.get('/', function (req, res) {
        res.sendfile(__dirname + '/dist/index.html');
    });
    _
  6. Swagger構成を完了します。

    _swagger.configureSwaggerPaths('', 'api-docs', '');
    
    var domain = 'localhost';
    if(argv.domain !== undefined)
        domain = argv.domain;
    else
        console.log('No --domain=xxx specified, taking default hostname "localhost".');
    var applicationUrl = 'http://' + domain;
    swagger.configure(applicationUrl, '1.0.0');
    _
  7. _/dist/index.html_でドキュメントファイルの依存関係を構成します。

    _if (url && url.length > 1) {
        url = decodeURIComponent(url[1]);
    } else {
        <del>url = "http://petstore.swagger.io/v2/swagger.json";</del>
        url = "/api-docs.json";
    }
    _
  8. APIの情報を含む_api-docs.json_ファイルを作成し、distフォルダーに入れます。

ローカルでExpressアプリを実行し、_http://localhost:3000/v1_にアクセスして、swagger docを確認できます。

参照用に テストサンプルリポジトリ を示します。

19
Gary Liu - MSFT

質問は少し古いですが、まだです。次のような分析ミドルウェアを埋め込むだけで、完全に自動的にSwagger(OpenAPI)仕様を生成できます。 https://github.com/mpashkovskiy/express-oas-generator

const express = require('express');    
const expressOasGenerator = require('express-oas-generator');
let app = express();
expressOasGenerator.init(app, {});

クライアントを実行するかREST APIがサービスを再度テストし、開く http:// Host:port/api-docs

5
mpashkovskiy

私の知る限り、オプションは次のとおりです。

  1. swagger-node-express の使用は、私の意見では非常に面倒です。
  2. スウェージャーエディター の助けを借りて、自分で手動でswaggerドキュメントを作成します SO Answer

オプション2に進むと、 swagger-ui-express を使用してswagger-uiを生成できます。

0