Aws-lambda-dotnet: SwaggerドキュメントはAPIゲートウェイと統合するときに公開されます

作成日 2018年01月30日  ·  22コメント  ·  ソース: aws/aws-lambda-dotnet

こんにちは、みんな、

「swagger / v1 /swagger.json」エンドポイントを介して公開された独自のswagger統合ドキュメントを持つ.netコアWebAPIがあります。 ラムダとしてデプロイされます。 また、このラムダと統合してすべてのAPIを公開するAPIゲートウェイを設定しました。

私が抱えている問題は、/ swaggerurlを介してswaggerドキュメントにアクセスできないことです。 常に「message:forbibbden」を返します。 Web APIをローカルで実行すれば、間違いなくSwaggerにアクセスできます。

何か案は?

ありがとう

ジェイソン

guidance

最も参考になるコメント

私も同じ問題を抱えていました。 解決策を得た-
以下に示すように、スタートアップファイルの名前にステージが追加されていることを確認してください。 ここで、Prodは私の芸名です。

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

@normjにこれを閉じるように要求します。

全てのコメント22件

私が見てみるための簡単なリポジトリリポジトリを作成できますか?

私は同じ問題を抱えています。

この@jasondaicoderで何か進歩はありましたか?

同じ問題です。修正が見つかった場合は更新してください。 jsonに直接アクセスできます(例:https://...../ Prod / swagger / v1 / swagger.json) 。 API GatewayはSwaggerをサポートしているため、「swagger」パスについて何か魔法のことを考えていました。 しかし、このページhttp://eatcodelive.com/2017/05/19/change-default-swagger-route-in-an-asp-net-core-web-api/の情報を使用して、次のように変更しました。 「盗品」とまだ同じ問題がありました。

面白い、ときにアクセスます。https://..../Prod/swaggerは、それはあなたをリダイレクトします。https://.../swaggerを、基本的には、その後につながるルートへのパスとバックのステージ一部を除去メッセージは禁止されています。

本当に男ではありません。 これは、APIゲートウェイがWeb APIに対してのみ機能し、UI関連では機能しないためである可能性があると考えました。 最終的にUIを別の場所でホストしましたが、APIゲートウェイを介してプロジェクトのSwaggerjsonファイルをポイントしました。 できます。

ありがとう。 うーん、これを行うのはちょっと面倒です:)デプロイの一部として通常のMVCホームコントローラーとインデックスページがあり、正常に動作します。 はい、私はある人が応答がjsonではなかった場所に関連している可能性があると思った投稿を読んでいましたが、私のインデックスページは正常に機能します。

私のソリューションでは、実際にUIをデプロイする必要があるのは1回だけです。 プロジェクトからjsonファイルをロードする限り、もう何もする必要はありません。 S3でUIファイルをホストします。 AWSチームが後で問題を修正できるかもしれません。

興味深い..ケストレルを実行せずにS3に.netコアUIをデプロイできますか? Swaggerは実行時のものであり、実行中のdllなどをサポートする必要があると考えました。たとえば、静的なファイルのセットだけではありません。

@normj 、プロジェクトはLamdbaエントリポイントを持つ通常のc#weapiです。 特別なことは何もありません。 後でGitHubにサンプルリポジトリを作成しようとします。 他の人が同じ問題を抱えているので、私のプロジェクトに正直なところ何も悪いことはないと思います。 APIゲートウェイに組み込まれているSwaggerドキュメントとの競合の可能性があると思います。

@rslanghamいいえ、プロジェクトをデプロイする必要はありません。 必要なのは、swaggerサイトから取得できるswagger ui静的ファイルをダウンロードすることだけです(swaggerサイトにあるGitHubへのリンクかもしれません)。

@jasondaicoderは、

本当に正しい解決策を見つけたいと思います:)ありがとう。

こんにちは。まったく同じ問題が発生しています。すぐに解決されることを願っています。

同じ問題も観察しています。

私も同じ問題を抱えていました。 解決策を得た-
以下に示すように、スタートアップファイルの名前にステージが追加されていることを確認してください。 ここで、Prodは私の芸名です。

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

@normjにこれを閉じるように要求します。

私のために働いた@AnandKhedkarありがとう

私も同じ問題を抱えていました。 解決策を得た-
以下に示すように、スタートアップファイルの名前にステージが追加されていることを確認してください。 ここで、Prodは私の芸名です。

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

@normjにこれを閉じるように要求します。

それはIndex.htmlページを表示します。 ただし、Swaggerインターフェイスを介したサービスの実行は許可されていません。
GET呼び出しのリクエストURLのパスは、Prodを再び除外します。
ただし、/ swaggerを追加する代わりに、 c.RoutePrefix = string.Empty;を使用してページをルートにレンダリングしています。

すべての相対URL参照で一貫性を保つように設定できるプロパティはありますか?

私も同じ問題を抱えていました。 解決策を得た-
以下に示すように、スタートアップファイルの名前にステージが追加されていることを確認してください。 ここで、Prodは私の芸名です。

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

@normjにこれを閉じるように要求します。

それはIndex.htmlページを表示します。 ただし、Swaggerインターフェイスを介したサービスの実行は許可されていません。
GET呼び出しのリクエストURLのパスは、Prodを再び除外します。
ただし、/ swaggerを追加する代わりに、 c.RoutePrefix = string.Empty;を使用してページをルートにレンダリングしています。

すべての相対URL参照で一貫性を保つように設定できるプロパティはありますか?

このソリューションで解決完全に機能し、Swaggerページのヘッダーにベースパスを表示します。

解決策が見つかったように見えるので、終了します。

私も同じ問題を抱えていました。 解決策を得た-
以下に示すように、スタートアップファイルの名前にステージが追加されていることを確認してください。 ここで、Prodは私の芸名です。

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

@normjにこれを閉じるように要求します。
これを定義するファイル。

私も同じ問題を抱えていました。 解決策を得た-
以下に示すように、スタートアップファイルの名前にステージが追加されていることを確認してください。 ここで、Prodは私の芸名です。

app.UseSwaggerUI(c =>
              {
                  c.SwaggerEndpoint("/Prod/swagger/v1/swagger.json", "GST Console API - V1");

              });

@normjにこれを閉じるように要求します。

これは私のために働いた。
ありがとう

私は同じ問題に遭遇しました。 しかし、コードへのPROD (ステージ名)のハードコーディングはオプションではありませんラムダが実行されているAPIゲートウェイ展開ステージを識別する方法はありますか? AWS環境変数か何か?

@grahamehornerここで、

app.UseSwaggerUI(c =>
{
  c.SwaggerEndpoint("v1/swagger.json", "GST Console API - V1");
});

基本的には、「swagger」と先頭の「/」を含まない相対パスURLを使用して、 c.SwaggerEndpoint()エンドポイントを設定するだけです。

「/」をc.SwaggerEndpoint()にリードせずに相対パスURLを指定すると、絶対エンドポイントURLは次のようになります。

AWS Serverless Url + "/" + c.RoutePrefix + "/" + the supplied url

ここで、 c.RoutePrefixはデフォルトで「swagger」に設定されています

たとえば、AWSサーバーレスURLが「 https://xyz.central.amazonaws.com/Prod 」の場合、絶対URLは「 。 .json '

このページは役に立ちましたか?
0 / 5 - 0 評価