如何在C# Azure Functions中添加标签并导入至Azure API Management?
在C# Azure Functions中添加标签并同步至Azure API Management
可以实现将C# Azure Functions中的标签同步到Azure API Management(APIM),主要有两种可行方案:
方案1:通过OpenAPI注释扩展直接定义标签
这是最直接的方式,借助Azure Functions的OpenAPI扩展给函数标记标签,导入APIM时会自动同步:
- 给Function项目安装
Microsoft.Azure.WebJobs.Extensions.OpenApiNuGet包。 - 在HTTP触发的函数方法上,添加
[SwaggerOperation]属性并指定Tags参数,示例代码如下:
using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Attributes; using Microsoft.AspNetCore.Http; using Microsoft.OpenApi.Models; public class OrderFunctions { [FunctionName("CreateOrder")] [SwaggerOperation( Summary = "创建订单", Tags = new[] { "订单服务", "核心业务" } // 定义同步到APIM的标签 )] [SwaggerResponse(StatusCodes.Status200OK, "订单创建成功")] public async Task<IActionResult> CreateOrder( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "orders")] HttpRequest req) { // 函数业务逻辑 return new OkObjectResult("订单已创建"); } }
- 部署Function App后,在APIM中选择从Function App导入API,选中你的Function App并指定使用其OpenAPI定义,导入完成后,函数对应的APIM操作会自动带上你定义的标签。
方案2:通过自定义属性+APIM导入规则映射标签
如果不想引入OpenAPI包,可以自定义属性标记函数,再通过APIM的导入规则将自定义属性映射为标签:
- 自定义一个标签属性:
[AttributeUsage(AttributeTargets.Method)] public class FunctionTagAttribute : Attribute { public string[] Tags { get; } public FunctionTagAttribute(params string[] tags) { Tags = tags; } }
- 在函数上标记该属性:
[FunctionName("ProcessPayment")] [FunctionTag("支付服务", "核心业务")] public async Task<IActionResult> ProcessPayment( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "payments")] HttpRequest req) { // 函数业务逻辑 return new OkObjectResult("支付处理完成"); }
- 在APIM导入Function App时,进入高级设置,配置导入规则,通过表达式提取函数的自定义属性值并映射为APIM操作的标签,例如使用表达式
{{function.customProperties.FunctionTag}}获取标签值并赋值。
注意事项
- 使用方案1时,可访问
https://<your-function-app>.azurewebsites.net/api/openapi/v3.json查看生成的OpenAPI定义,确认标签已包含在内。 - 后续函数更新后,重新导入APIM时,只要OpenAPI定义或自定义属性的标签未改变,APIM中的标签会自动保持同步。
内容的提问来源于stack exchange,提问作者Henrik
相关产品推荐
相关产品推荐

