在Azure Functions V2中大摇大摆

时间:2018-09-25 14:14:05

标签: azure-devops swagger azure-functions openapi

我正在创建一个V2 Function应用程序,并想为文档使用Swagger / Open API,但是Azure Portal for V2 Function尚不支持它。

关于如何在VSTS中将Swagger与V2函数一起使用以在每个版本上创建文档的任何建议?

7 个答案:

答案 0 :(得分:4)

TL; DR-使用NuGet包通过Azure函数呈现Open API文档和Swagger UI。

-

Microsoft尚未正式开始支持Open API(或Swagger)。但是目前有一个社区驱动的NuGet软件包:

https://www.nuget.org/packages/Aliencube.AzureFunctions.Extensions.OpenApi/

这是它的博客文章:

https://devkimchi.com/2019/02/02/introducing-swagger-ui-on-azure-functions/

基本上,它的用法类似于Swashbuckle,即使用装饰器。它同时支持Azure Functions V1和V2。

  

致谢:我是NuGet软件包的所有者。

答案 1 :(得分:2)

对于任何对此感兴趣的人,Microsoft仍未添加对Azure Functions + v2的Open API支持,并且对此没有任何重大动向。

我最近也遇到了同样的问题,并且找到了一个很好的解决方案。 如果您还不知道,请查看以下内容:2

NSwag是一个工具链,它与.NET集成以生成Open API文档和UI,但也可以为您生成相应的API客户端。 在过去的两年中,我在使用Angular和.NET应用程序时一直使用此工具,它节省了大量时间,并与我的整个开发工作流程无缝集成。

对于Azure Functions + v2,一个贡献者创建了一个生成器,该生成器使用不到10行代码,允许我们为Azure Function类公开Swagger终结点: https://github.com/RicoSuter/NSwag

现在,如果您使用DI设计HTTP触发函数,在同一类下对相关操作进行分组并利用模型绑定,那么您甚至不需要应用任何自定义装饰器,它就可以工作! 这是一个真实API的示例: https://github.com/Jusas/NSwag.AzureFunctionsV2

(忽略基类。这是我遵循的个人模式的一部分,与Swagger无关)

这是使用摇摇欲坠的UI的样子: API + Swagger example

答案 2 :(得分:2)

官方图书馆Azure Functions OpenAPI Extension。它仍处于预览版,但看起来很棒。

答案 3 :(得分:1)

中等实际上有一个很好的教程,介绍了如何完成此操作:Swagger in Azure Functions V2

它使用Swashbuckle AzureFunctions扩展:https://www.nuget.org/packages/AzureFunctions.Extensions.Swashbuckle/

我已经成功测试/实施-绝对是实现此目的的最佳方法之一。

答案 4 :(得分:0)

是否可以通过首先使用空白函数应用程序重新启动V2函数,使其在运行时的v1上运行?

Create an OpenAPI definition for a function的MSDN文档(日期有趣的是11/2018)示例指出:

  

默认情况下,您创建的功能应用使用2.x版本的   运行。必须先将运行时版本设置回1.x。   创建功能。

但是不能只是将设置移至1:

  

要将功能应用固定到版本1.x运行时,请在下面选择〜1   运行时版本。当您具有以下功能时,此开关将被禁用   您的应用。

这意味着必须先创建Function应用程序,然后将其发布/创建,将其设置为V1,然后再添加功能。

答案 5 :(得分:-1)

您可以查看框架Function Monkey Function Monkey homepage

它具有很多功能,包括swagger / OpenAPI定义。 Function Monkey Swagger

答案 6 :(得分:-2)

在门户中,如果转到功能应用程序>平台功能> API定义,然后单击“ API定义源”下的“功能(预览)”按钮,则可以尝试在其中编写Swagger。