2016-03-14 10 views
10

私はSwaggerに移行する予定の正常なHapiアプリケーションを持っています。公式の指示に従ってswagger-nodeをインストールし、 'swagger project create'を実行するときはHapiを選択しました。HapiでSwaggerを使用するにはどうすればよいですか?

  1. hapi-swagger:最も人気のある1
  2. hapi-swaggered
  3. swagger-hapiやや人気:その不人気とない闊歩ノードとHAPIを統合するためのいくつかのライブラリがあるように思われるので、しかし、私は今混乱していますアクティブしかしハピのデフォルトは、私が情報を見つけることを試みたまで、私も威張っ-HAPIは、「公式」なアプローチだった

をプロジェクトとして正式闊歩Node.jsのライブラリ(すなわちswagger-node)で使用されますHapiルート(例:承認、スコープなど)。また、hapi-swaggerとhapi-swaggeredは、単純な古いHapiからSwagger APIドキュメントを生成するだけで、同様のアプローチを持つように見えるのに対して、アプローチは根本的に異なり、Swagger-hapiは入力としてSwagger定義を採用し、経路定義。

投稿者の数とダウンロード数を考慮すると、hapi-swaggerが行く方法のようですが、進める方法がわかりません。 Hapiをセットアップするための「公式の」甘い方法がありますか?もしあれば、(好ましくはhapi-auth-jwt2、または他の同様のJWTソリューションを使用して)認証と認可を設定するにはどうすればよいですか?

編集:私はswaggerize-hapiも見つけました。これはPayPalのオープンソースのkraken.jsチームによって維持されていると思われます。これは、何らかの企業の裏付け(常に良いこと)がある可能性があることを示しています。 swaggerize-hapiはhapi-swaggerと非常によく似ているようだが、後者はよりすぐに利用できる機能(主にSwagger Editor)を提供するようだ。

+0

私は経路の文書化にhapi-swaggerを使用しました。生成されたJSONファイルを使用して、単なるドキュメント以上のことを目指していますか? –

+0

Swagger定義(swagger-node/swagger-hapiやswaggerize-hapiなど)からオンザフライでHapiルートを生成するプラグインが必要です。最初にHapiルートを作成してから、そのルートからSwagger定義やドキュメンテーションを生成することについてのポイントは実際にはありません。 – Kitanotori

+0

これを解決しましたか? – k0pernikus

答えて

4

編集:ポイント3。あなたの質問から、swagger-hapiが実際に行うことが非常に重要であることを理解してください。それはswagger-ui htmlを直接提供するものではありません。これは意図したものではありませんが、それは、全体的な考え方(ポイント1.と2.の他のプロジェクトは実際には少し反転しています)を可能にしています。下記を参照してください。

それはあなたがswagger-nodeを使用しているときことが分かったとswagger-hapiあなたはとにかく他のすべてで使用されている(直接swagger-uiを用いた以外は、あなたが言及したパッケージのすべての残りの部分を必要としない - 彼らはそれらの依存関係でそれをラップしています)

私はこのhapi/swaggerパズルでこれまでの私の理解を共有したいと思います。私が費やしたこれらの8時間が他の人たちにも役立つことを願っています。

ライブラリもhapi-swaggeredhapi-swaggered-uihapi-swaggerのように - それらのすべてが同じアプローチに従う - そのように説明されることがあります。

You document your API while you are defining your routes

を彼らはややswagger-nodeとの主なアイデアは別に座っていますボイラープレートのhello_worldプロジェクトをswagger-cliで作成しました。

swagger-nodeswagger-hapi(注hapi-swaggerからの異なるもの)が言っている間:

You define all your API documentation and routes **in a single centralized place - swagger.yaml**

、その後、あなただけのコントローラロジックを書くことに焦点を当てます。 swagger-cliで提供された定型プロジェクトでは、すでにこの集中管理された場所swagger.yamlが/ swaggerエンドポイントを介してjsonとして公開されています。今

、上記のすべてのパッケージは、UIを表示するための使用を作っているswagger-uiプロジェクトは、静的なHTMLのちょうど束であるため、 - それを使用するためには、次の2つのオプションがあります。

  • を1)あなたのアプリケーション内からこの静的HTMLを自己ホストするには

  • 2)別のWebアプリケーションでホストするか、ファイルシステムから直接index.htmlをロードすることもできます。あなたは自分の闊歩をJSONで威張っ-UIを供給する必要があり、両方のケースで

- 上記の言ったように、既に/swaggerエンドポイントによって公開されています。

オプション2)を選択した場合の唯一の注意点は、非常に簡単に起こったエンドポイントのcorsを有効にする必要があることです。 default.yamlを変更して、cors bagpipeを使用するようにしてください。これを行う方法はthreadを参照してください。

@Kitanotoriが上に述べたように、私はプログラムでコードを文書化することについても言及していません。すべてを1か所に記述し、コードとドキュメントエンジンの両方を理解するというアイデアは素晴らしいことです。

関連する問題