18

我已经使用 .Net 4.5 创建了一个 WebAPI,并希望使用Swagger记录这个 API 。我在我的 .Net 项目中添加了swagger-ui 。现在,当我浏览到 ../swagger-ui/index.html 时,它成功地以 swagger UI 格式打开宠物商店 api-docs (json)。

我的问题是如何为我的 WebAPI 控制器和模型创建这样的 (swagger) json?正如我在 c# 类和属性中添加了所需的 XML 摘要/注释一样。

我看到Swagger.NetSwashbuckle在那里做类似的事情,但我真的不明白如何使用它们中的任何一个来生成 swagger-json 文件。我可能犯了一个很小的错误,但无法指出。

请帮忙。

4

3 回答 3

27

如前所述,/swagger 将您带到 swagger UI。

如果您使用的是 Swashbuckle,那么/swagger/docs/v1应该将您带到 swagger.json 文件 - 我使用 Chrome 开发工具找到了这个。

编辑:如果您使用的是 Swashbuckle.AspNetCore,那么 url 会略有不同 -/swagger/v1/swagger.json

于 2015-04-16T14:25:18.787 回答
4

您需要将 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>
于 2014-02-11T18:41:21.420 回答
1

您可以使用“NSwagStudio”桌面应用程序来加载 json 文档,而无需运行 api 项目。通过提供 api 程序集。

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

下载 (NSwagStudio) windows 桌面应用程序。

于 2017-09-14T12:14:55.310 回答