.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/registerPOST →Auth_Register_Post/auth/loginPOST →Auth_Login_Post/auth/refreshPOST →Auth_Refresh_Post
原理是通过context拿到当前端点的元数据,解析出路由路径和请求方法,再对字符串做格式化处理,最终动态生成符合要求的OperationId,替代原来的静态赋值方式。
内容的提问来源于stack exchange,提问作者clfaster
相关产品推荐
相关产品推荐

