以swagger json格式生成WebAPI文档

以swagger json格式生成WebAPI文档,json,asp.net-web-api,swagger,api-doc,Json,Asp.net Web Api,Swagger,Api Doc,我已经使用.NET4.5创建了一个WebAPI,并希望使用.NET4.5记录此API。 我在.Net项目中添加了。现在,当我浏览到../swagger ui/index.html时,它以swagger ui格式成功打开(json) 我的问题是如何为我的WebAPI控制器和模型创建这样的(招摇过市的)json?正如我在c#类和属性中输入了所需的XML摘要/注释 我看到了,并且正在做类似的事情,但我真的不明白如何使用它们中的任何一个生成swagger json文件。我可能犯了一个很小的错误,但我无法

我已经使用.NET4.5创建了一个WebAPI,并希望使用.NET4.5记录此API。 我在.Net项目中添加了。现在,当我浏览到../swagger ui/index.html时,它以swagger ui格式成功打开(json)

我的问题是如何为我的WebAPI控制器和模型创建这样的(招摇过市的)json?正如我在c#类和属性中输入了所需的XML摘要/注释

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


请提供帮助。

您需要将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:


$(函数(){
window.swaggerUi=新的swaggerUi({
发现者:“http://localhost:5555/api/swagger",
apiKey:“,
dom_id:“招摇过市ui容器”,
supportHeaderParams:false,
supportedSubmitMethods:['get','post','put']
});
window.swaggerUi.load();
});

如上所述,/swagger将带您进入swagger用户界面

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

编辑:如果您使用的是Swashback.AspNetCore,则url略有不同-
/swagger/v1/swagger.json

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


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

我想做与此相反的事情。您找到问题的解决方案了吗?我还对在不运行web服务器的情况下生成json规范感兴趣。不,我还找不到任何支持WebAPI属性路由的解决方案。这也是doc的运行时版本。我们必须运行web服务器才能获取/显示文档。但问题是如何生成json规范。我对这个主题也感兴趣-我需要在build.Swagger.Net上生成json Swagger规范文件。Swagger.Net将使用ASP.Net API浏览器为您生成json规范。如果出于某种原因需要保存json规范文件,那么只需调用url并将结果保存到文件中即可。某些数据仅在运行时可用,这就是为什么需要运行该服务的原因。例如,路由将由代码定义,因此在不运行服务的情况下,静态分析将无法猜测实际路由。
<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>