You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8中如何为MapIdentityApi生成的路径动态设置OpenApi OperationId

.NET 8中为MapIdentityApi生成的端点动态设置OperationId

当然可以实现动态设置,核心是利用WithOpenApi重载的第二个参数OpenApiOperationContext,它能提供当前端点的路由和HTTP方法信息,以此生成符合你需求的OperationId。

直接上可行的代码示例:

app.MapGroup("/auth")
   .MapIdentityApi<User>()
   .WithOpenApi((operation, context) =>
   {
       // 获取当前端点的路由路径
       var routePattern = context.EndpointMetadata.OfType<RouteEndpointMetadata>()
           ?.FirstOrDefault()?.Pattern ?? string.Empty;
       // 获取HTTP方法(如POST、GET)
       var httpMethod = context.HttpMethod;

       // 处理路径:去掉首尾斜杠,拆分后每个段首字母大写,用下划线连接
       var pathParts = routePattern.Trim('/')
           .Split('/')
           .Select(seg => char.ToUpperInvariant(seg[0]) + seg[1..].ToLowerInvariant());
       var pathSegment = string.Join("_", pathParts);

       // 处理HTTP方法:首字母大写,其余小写
       var methodSegment = char.ToUpperInvariant(httpMethod[0]) + httpMethod[1..].ToLowerInvariant();

       // 拼接成目标格式的OperationId
       operation.OperationId = $"{pathSegment}_{methodSegment}";

       return operation;
   });

这段代码会自动为每个MapIdentityApi生成的端点生成对应格式的OperationId:

  • /auth/register POST → Auth_Register_Post
  • /auth/login POST → Auth_Login_Post
  • /auth/refresh POST → Auth_Refresh_Post

原理是通过context拿到当前端点的元数据,解析出路由路径和请求方法,再对字符串做格式化处理,最终动态生成符合要求的OperationId,替代原来的静态赋值方式。

内容的提问来源于stack exchange,提问作者clfaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:56:11