web-dev-qa-db-ja.com

Swagger json形式でWeb APIドキュメントを生成する

.Net 4.5を使用してWebAPIを作成し、このAPIを Swagger を使用して文書化したいと考えています。 .Netプロジェクトに swagger-ui を追加しました。 ../swagger-ui/index.htmlを参照すると、swagger UI形式で pet store api-docs (json)が正常に開きます。

私の質問は、WebAPIコントローラーとモデル用にそのような(swagger)jsonを作成するにはどうすればよいですか?必要なXMLの要約/コメントをc#のクラスと属性に追加したので。

Swagger.NetSwashbuckle が同様のことをしているのを見ましたが、それらのいずれかを使用してswagger-jsonファイルを生成する方法を本当に理解できませんでした。私がしている非常に小さな間違いがあるかもしれませんが、指摘することはできません。

助けてください。

17
theGeekster

前述のとおり、/ swaggerを使用すると、swagger UIに移動します。

スワッシュバックルを使用している場合は、/swagger/docs/v1でswagger.jsonファイルにアクセスできます-これはChrome開発ツールを使用して見つかりました。

編集:Swashbuckle.AspNetCoreを使用している場合、URLは少し異なります-/swagger/v1/swagger.json

25
Matt Frear

Swagger.NETをプロジェクトに統合して、次のコントローラーになるようにする必要があります。

public class SwaggerController : ApiController { /* snip */ }

また、次のルートも登録しておく必要があります。

context.Routes.MapHttpRoute (
name : "Swagger",
routeTemplate: "api/swagger"
defaults: new
{
  controller = "Swagger",
  action = "Get",
});

それが機能していると仮定すると、/ api/swaggerを呼び出して次のようなものを取得できるはずです。

{
  apiVersion: "4.0.0.0",
  swaggerVersion: "2.0",
  basePath: "http://localhost:5555",
  resourcePath: null,
  apis: [
  {
    path: "/api/docs/Values",
    description: "No Documentation Found.",
    operations: [ ]
  },
  {
    path: "/api/docs/Home",
    description: "No Documentation Found.",
    operations: [ ]
  }
]

}

次に、SwaggerUI/index.htmlで、discoveryUrlを更新します。

<script type="text/javascript">
    $(function () {
        window.swaggerUi = new SwaggerUi({
            discoveryUrl: "http://localhost:5555/api/swagger",
            apiKey:"",
            dom_id:"swagger-ui-container",
            supportHeaderParams: false,
            supportedSubmitMethods: ['get', 'post', 'put']
        });

        window.swaggerUi.load();
    });
</script>
4
Todd Smith

「NSwagStudio」デスクトップアプリケーションを使用して、apiプロジェクトを実行せずにjsonドキュメントをロードできます。 APIアセンブリを提供する。

https://github.com/RSuter/NSwag/wiki/NSwagStudio

(NSwagStudio)Windowsデスクトップアプリケーションをダウンロードします。

1
velmurugan