3

私は、主にAPI駆動のRailsアプリを書き直しています。GrapebyIntrideaとgrape-swagger gemを使用して、ドキュメントのSwaggerUIを有効にしています。

だから私は単純なhelloworldアプリを実行しています。現時点ではJSON解析エラーが発生していますが、Swaggerテストから発見できるようです(次に調べます)。/swagger_doc.jsonを指すSwaggerUIをRailsアプリに配置して、ビルドするときにドキュメントが適切にビルドされていることを確認したいと思います。

RailsアプリのどこにSwaggerUIを配置しますか?パブリックディレクトリ?

4

3 に答える 3

6

さて、以前にすべてをパブリックディレクトリに置いてみたところ、何も表示されないスナフスがいくつか見つかりました。

myapp/public/swagger-ui-1.1.1/files

1)これが違いを生むべきかどうかはわかりませんが、config.ruでrailsアプリとgrapeアプリをロードした順序が、ルーティングの処理方法に違いをもたらしたようです...もっと理解する必要がありますそれがどのように機能するか。しかし、ルート内にマウントされたブドウアプリは、私が期待することを実行します。その結果、swagger-uiが公開されてから、

http://appurl/swagger-ui-1.1.1/ 

SwaggerUIを提供します。さらに詳細があれば、これに詳細を追加します。

編集:ここで助けを必要とする私のような他のユーザーがそこにいるので、私はそれを以下に概説します。とても簡単です。

アセットパイプラインに/swaggerサブディレクトリを作成します-私はベンダーの下でそれを行いました。libファイルをSwaggerUIからこれらのサブディレクトリにコピーします。インデックスアクションを使用して基本的なdocs_controllerを作成します(空にすることもできます)。views / docsディレクトリを作成し、swagger-uiindex.htmlをそのディレクトリにコピーします。index.htmlのasset-tagsへのスタイルシートとjavascriptの呼び出しを変更します。ドキュメントのリソースルートを追加します。window.swaggerUIを呼び出すjavascript関数のdiscoveryURLを「http://my.root.url/swagger_doc.json」(理想的にはENV変数から)に変更します。

それでおしまい。今はうまくいきます。apiサブドメインでGrapeAPIを使用して遭遇した1つの落とし穴は、Swaggerがdocsサブドメインで実行されていたときのCORSでした。次のようなものを追加することで、Grapeで簡単に修正できます。

before do
  header "Access-Control-Allow-Origin", "http://#{ENV["BASE_URL"]}"
  header "Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT"
  header "Access-Control-Max-Age", "1728000"
end

Grapeapi.rbに。すべてが誰かを助けることを願っています。

于 2012-10-26T23:16:38.273 に答える
1

この宝石、 https://github.com/BrandyMint/grape-swagger-railsを見てみると簡単です。

于 2014-08-22T08:26:36.583 に答える
0

すべてのSwaggerUIをRailsアプリのパブリックディレクトリに配置する必要があります。そして、以下のバージョンで使用してください。

gem'grape'、'〜> 0.7.0' gem'grape-swagger'、'〜> 0.7.2'

'grape-swagger'gemは最新バージョンではサポートされていないためです。

于 2014-12-31T08:47:17.160 に答える