带有 ASP.NET v5 Azure Api 应用程序的 Swagger

Swagger w/ ASP.NET v5 Azure Api App

我正在尝试使用 Swagger + Swashbuckle 设置一个 Api 应用程序 (Azure),正如 Scott Hanselman 在 //Build 会议上演示的那样:http://channel9.msdn.com/Events/Build/2015/2-628

我已经安装(使用 NuGet)包 Swagger.Api 和 Swashbuckle.Core。它没有添加我期望的任何控制器或设置,以便拥有一个招摇的页面。当我导航到 {baseUrl}\swagger 时,我收到 404 错误。

我认为,因为它有一个 UI,所以除了 Api 应用程序之外,它还需要一个 Web 应用程序,但我已经重新观看了演示,Scott 明确表示您可以添加 Swagger + 虚张声势到任何 Api 应用程序。在第二个应用程序中,虽然我认为 Api 发现可能存在问题。有人设置成功了吗?

您完成了所有正确的步骤,但不幸的是 ASP.NET 5,Swashbuckle 还无法正常工作。

你可以得到啊!这是支持 ASP.NET v6 here 的下一个 Swashbuckle 版本。那应该使一切正常。

这个答案现在已经过时了。请参阅其他答案。

有一篇很好的博文描述了您遇到的问题:https://alexanderzeitler.com/articles/Deploying-a-ASP-NET-MVC-6-API-as-Azure-API-App-in-Azure-App-Services/

这里介绍了如何添加 Ahoy!打包到 ASP.NET v6 Web Api 项目并将其作为 API 应用程序添加到 Azure。

这是另一个来源:http://devmeetsbi.ghost.io/help-and-test-page-for-asp-net-web-api-asp-net-5-and-mvc-6/

时间流逝,现在 Swashbuckle 适用于 vNext(对我来说是 beta8,可能还有其他版本)- 感谢团队和贡献者!

在project.json中添加包:

    "Swashbuckle": "6.0.0-*",

在 startup.cs 中的 ConfigureServices():

        services.AddSwaggerGen();
        services.ConfigureSwaggerDocument(options =>
        {
            options.SingleApiVersion(new Info
            {
                Version = "v1",
                Title = "My Super API",
                Description = "A Super API using Swagger and Swashbuckle",
                TermsOfService = ""
            });

        });
        services.ConfigureSwaggerSchema(options =>{
            options.DescribeAllEnumsAsStrings = true;
        });

在startup.cs中配置():

        app.UseSwaggerGen();
        app.UseSwaggerUi();

现在您可以访问您的 API doco - http://domain:port/swagger/ui/index.html

访问您的 Swagger 定义 - http://domain:port/swagger/v1/swagger.json

然后假设您至少有一个面向互联网的 dev/uat/staging/prod 环境,获取定义 URL 然后在 http://editor.swagger.io/ 执行文件-> 导入 URI - 现在您有代码生成还有大约 20 个客户:)

如果您也愿意,也可以设置自己的代码生成服务器 (https://github.com/swagger-api/swagger-codegen),但是我利用了现有的在线生成器。在线编辑器也有完整的模型和关系定义,至少在我的情况下,我使用 EF7 完全定义了我的模型(我知道,恶心......但它比 <= EF6 好得多,而且 ServiceStack 还不支持 CoreCLR) .根据项目的大小,这可以为您节省几个小时到几周的工作记录时间,而且它会随着您编写更多代码而动态更新。你也可以用它来测试你的端点,但我还是更喜欢 PostMan。

https://github.com/mrsheepuk/ASPNETSelfCreatedTokenAuthExample/tree/beta8

处的完整示例项目

感谢 MrSheepUK

HTH