ASP.NET中SuccessAndNoData方法如何返回201状态的CreatedAtActionResult?
问题:如何让方法返回对应201状态码的结果?
现有如下C#代码:
protected NoContentResult SuccessWithOutData() { return this.NoContent(); } protected CreatedAtActionResult SuccessAndNoData() { return ? ; // What do I return here? }
其中SuccessWithOutData方法返回对应204状态的NoContentResult,请问SuccessAndNoData方法需返回什么才能得到201状态码?
要返回201状态码,你需要正确构造CreatedAtActionResult实例——201状态码的语义是"资源已创建",通常要求在响应头里返回新资源的位置(Location),所以必须指定对应的路由信息,即使没有实体数据返回。
示例代码如下:
protected CreatedAtActionResult SuccessAndNoData() { // 替换为实际的目标Action名称,以及必要的路由参数(比如新创建资源的ID) return CreatedAtAction(nameof(YourTargetAction), new { id = 123 }, value: null); }
关键说明:
CreatedAtAction第一个参数是目标Action的名称,用nameof可以避免硬编码字符串;- 第二个参数是路由参数对象,用来生成Location头的完整URL;
- 第三个参数
value传null,表示响应体不返回任何数据,满足你"无数据"的需求。
如果你的场景不需要关联到具体Action,也可以改用CreatedResult直接指定资源的URI(注意要同步调整方法的返回类型):
protected CreatedResult SuccessAndNoData() { return Created("https://your-domain.com/resources/123", null); }
内容的提问来源于stack exchange,提问作者user19181303
相关产品推荐
相关产品推荐

