Cal*_*ale 8 c# asp.net-core asp.net-core-2.1
当我执行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);
}
}
Run Code Online (Sandbox Code Playgroud)
这仅用于GET请求,POST,PUT,DELETE返回200空响应。这与我的招摇定义相混淆,后者的定义为200响应,我宁愿保持一致。
如果我通过此控制器提供HTML,但204用于REST API,则204会很好。
我如何得到它返回200?
使用ActionResult<T>v2.1 +中的新功能,您还可以重构以专门告诉控制器使用Ok()辅助方法返回Ok 200
[Route("user/v1/[controller]")]
public class UserLoginController : Controller {
[HttpGet]
public async Task<ActionResult<UserLogin>> Get(int userId) {
var userLoginLogic = new UserLoginLogic();
var model = await userLoginLogic.GetUserLogin(userId);
return Ok(model);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果实际上没有要返回的内容,这可能会产生误导。考虑使用适当的响应状态
[Route("user/v1/[controller]")]
public class UserLoginController : Controller {
[HttpGet]
public async Task<ActionResult<UserLogin>> Get(int userId) {
var userLoginLogic = new UserLoginLogic();
var model = await userLoginLogic.GetUserLogin(userId);
if(model == null) return NotFound(); //404
return Ok(model); //200
}
}
Run Code Online (Sandbox Code Playgroud)
如果打算返回200 Ok而没有内容使用ControllerBase.Ok()方法
创建一个OkResult对象,该对象产生一个空的Status200OK响应。
[Route("user/v1/[controller]")]
public class UserLoginController : Controller {
[HttpGet]
public async Task<ActionResult<UserLogin>> Get(int userId) {
var userLoginLogic = new UserLoginLogic();
var model = await userLoginLogic.GetUserLogin(userId);
if(model == null) return Ok(); //200 with no content
return Ok(model); //200
}
}
Run Code Online (Sandbox Code Playgroud)
ASP.NET Core Web API中的参考控制器操作返回类型:
看:
services.AddControllers(opt => // or AddMvc()
{
// remove formatter that turns nulls into 204 - No Content responses
// this formatter breaks Angular's Http response JSON parsing
opt.OutputFormatters.RemoveType<HttpNoContentOutputFormatter>();
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3068 次 |
| 最近记录: |