如何为 Http 触发的 Azure 函数(隔离/进程外)生成 Api 客户端?

Posted

技术标签:

【中文标题】如何为 Http 触发的 Azure 函数(隔离/进程外)生成 Api 客户端?【英文标题】:How to generate Api clients for Http triggered Azure functions (isolated/out-of-process)? 【发布时间】:2021-12-05 19:35:36 【问题描述】:

我有 Http 触发的 Azure 函数(隔离),API 规范是使用 DataAnotations (Microsoft.Azure.WebJobs.Extensions.OpenApi.Core) 定义的。作为 Azure DevOps 构建过程的一部分,我想生成 C# REST 客户端并将其作为工件发布。我查看了 NSwag/AutoRest 示例,但未能找到合适的参考/示例。是否有工具可用于为进程外 azure 功能生成客户端,如果有,建议/指导继续前进。

谢谢。

【问题讨论】:

【参考方案1】:

Swagger UI 可用于生成 OpenAPI。由于它依赖于进程内模型,因此在进程外模型可用时,该扩展将无法工作。

Jan Hajek 如何在他的 BLOG 中提出解决方案,用于为 Azure 功能(隔离/进程外)生成 OpenAPI 客户端。

第 1 步:在 .NET 5.0 中,创建一个函数。

第 2 步:创建模型。

第 3 步:分配适当的端点并正确注释它们。

参考:

    Quickstart: Create your first C# function in Azure using Visual Studio | Microsoft Docs

    A sample project showing the use of OpenAPI.NET.CSharpAnnotations with Azure Functions (github.com)

【讨论】:

谢谢。我已经开发和部署了 Azure 功能(隔离)(通过 Azure 管道),API 定义是使用 DataAnotations 实现的(使用 Extensions.OpenApi.Core)。作为 DevOps 流程的一部分,我想根据这个 DataAnotation (OpenAPI) 规范自动生成休息客户端,这就是我想要关于解决方案的建议的地方。在我的搜索中,我找不到任何使用 Nswag/AutoRest 进行隔离实现的参考。 一个简单的事实是,隔离模式对于生成 API 客户端不是很好。您必须自己注释这些方法,这本身就是不好的,因为如果您不小心,这些注释可能会变得不同步。在我看来,除了非常简单的用例之外,它还不能真正投入使用。

以上是关于如何为 Http 触发的 Azure 函数(隔离/进程外)生成 Api 客户端?的主要内容,如果未能解决你的问题,请参考以下文章

Azure Pipelines 如何为“仅限手动”触发的版本筛选每个阶段的工件

使用 azure webjobs 我如何为计划任务传递参数

HTTP 按需触发 Azure 函数多次调用自身

从 Azure Python HTTP 触发函数调用 Azure 逻辑应用

Http 触发器启用 Azure 函数超时

Azure函数HTTP触发器未取消请求