我正在开发基于Asp.net Core MVC 1.1.3的REST-Api如果一个动作没有返回类型我的客户端库需要一个状态代码204(没有内容) 这是我的行动:
[HttpPut]
[Route("")]
public async Task Update([FromBody]ApiResourceUpdateDto dto)
{
await _repo.Update(dto.Name, dto.Enabled, dto.DisplayName, dto.Description);
}
由于此方法不返回任何内容,因此应返回状态代码204(无内容)。但是,如果我测试这个方法,虽然正文是空的,但我会得到200的状态代码。我也尝试切换到void
而不是Task
,但它没有改变任何内容。
Request URL:http://localhost:5000/api/apiresource
Request Method:PUT
Status Code:200 OK
Remote Address:[::1]:5000
Referrer Policy:no-referrer-when-downgrade
这是一个错误还是我错过了什么?
答案 0 :(得分:3)
有NoContentResult
返回HTTP 204状态代码。自重写以来,由于两个框架与先前版本的合并,您必须对返回的内容更加明确。控制器可以是web api或普通MVC,因此无法自动推断它是哪种类型。
[HttpPut]
[Route("")]
public async Task<IActionResult> Update([FromBody]ApiResourceUpdateDto dto) {
await _repo.Update(dto.Name, dto.Enabled, dto.DisplayName, dto.Description);
return new NoContentResult();
}
或者您甚至可以使用return NoContent();