如何在Fast-Endpoints的201响应中用路径参数设置Location头?
解决Fast-Endpoints中SendCreatedAtAsync生成路径式Location头的问题
要生成api/foo/bars/12345这种路径参数形式的Location头,按以下步骤操作即可:
第一步:配置目标端点的路由为路径参数模式
确保你的GetUser.Endpoint路由定义里,把id设为路径参数而非查询参数:public class GetUser : Endpoint<GetUserRequest, UserResponse> { public override void Configure() { Get("api/foo/bars/{id}"); // 用{id}定义路径参数 // 其他端点配置逻辑 } // 端点处理逻辑... }第二步:正常调用SendCreatedAtAsync方法
保持你原本的调用代码不变,框架会自动匹配路径参数并生成对应的Location格式:await SendCreatedAtAsync<GetUser.Endpoint>(new { id = response.Id }, response);
如果目标端点原本的路由是查询参数模式(比如api/foo/bars?id={id}),框架才会生成带查询参数的Location。只要切换成路径参数路由,就能得到你想要的格式。
要是需要完全自定义Location头,也可以跳过框架的封装方法,手动构建响应:
Response.Headers.Location = $"api/foo/bars/{response.Id}"; await SendAsync(response, 201);
内容的提问来源于stack exchange,提问作者Eduardo Brites
相关产品推荐
相关产品推荐

