【发布时间】:2020-04-02 15:06:27
【问题描述】:
当我执行 GET 请求但我没有找到任何数据时,我的控制器返回 204。
[Route("user/v1/[controller]")]
public class UserLoginController : Controller
{
[HttpGet]
public async Task<UserLogin> Get(int userId)
{
var userLoginLogic = new UserLoginLogic();
return await userLoginLogic.GetUserLogin(userId);
}
}
这仅适用于 GET 请求,POST、PUT、DELETE 返回 200 空响应。这与我为 200 响应定义的响应定义的招摇定义混淆了,我宁愿保持一致。
如果我从这个控制器中提供 HTML,那么 204 会很好,但它是用于 REST API。
如何让它返回 200?
【问题讨论】:
-
您运行的是 v2.0 还是 v2.1?
-
我正在运行 2.1
-
“HTTP 204 NO CONTENT:服务器已成功完成请求,并且响应负载正文中没有其他内容要发送”。对于不返回数据的 GET 返回 204 是完全有意义的。对于 Web 应用程序 (MVC) 返回 204 是没有意义的。
-
如果协议是 HTTP 并且 GET 不返回内容,那么 204 实际上是正确的成功代码 - 2xx 范围内的任何内容都是成功的。您可能会收到 204,因为实际上您并没有返回内容。
-
您是说您希望它在找不到用户时返回 200 吗? 404 不是更有意义吗?
标签: c# asp.net-core asp.net-core-2.1