Return API 方法中的 HttpStatusCode
Return HttpStatusCode in API method
如果出现问题,我如何return API 方法中的 ASP.NET Core 1.0 中的 HttpStatus 代码?
如果该方法应该 return 特定对象类型,当我尝试 return Http 状态代码时,我收到一条错误消息,提示我无法将我的对象转换为状态代码。
[HttpPost]
public async Task<SomeObject> Post([FromBody] inputData)
{
// I detect an error and want to return BadRequest HttpStatus
if(inputData == null)
return new HttpStatusCode(400);
// All is well, so return the object
return myObject;
}
Return 来自控制器操作的 IActionResult
改为:
public async Task<IActionResult> Post([FromBody] InputData inputData)
{
if(inputData == null)
{
return new HttpStatusCodeResult((int) HttpStatusCode.BadRequest);
}
//...
return Ok(myObject);
}
如果您想从控制器中删除此类空检查,您可以定义一个自定义属性:
public class CheckModelForNullAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.ActionArguments.Any(k => k.Value == null))
{
context.Result = new BadRequestObjectResult("The model cannot be null");
}
}
}
这样我们就不必担心模型在动作中为空。
[HttpPost]
[CheckModelForNull]
public async Task<SomeObject> Post([FromBody]InputData inputData)
{
// My attribute protects me from null
// ...
return myObject;
}
如果出现问题,我如何return API 方法中的 ASP.NET Core 1.0 中的 HttpStatus 代码?
如果该方法应该 return 特定对象类型,当我尝试 return Http 状态代码时,我收到一条错误消息,提示我无法将我的对象转换为状态代码。
[HttpPost]
public async Task<SomeObject> Post([FromBody] inputData)
{
// I detect an error and want to return BadRequest HttpStatus
if(inputData == null)
return new HttpStatusCode(400);
// All is well, so return the object
return myObject;
}
Return 来自控制器操作的 IActionResult
改为:
public async Task<IActionResult> Post([FromBody] InputData inputData)
{
if(inputData == null)
{
return new HttpStatusCodeResult((int) HttpStatusCode.BadRequest);
}
//...
return Ok(myObject);
}
如果您想从控制器中删除此类空检查,您可以定义一个自定义属性:
public class CheckModelForNullAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.ActionArguments.Any(k => k.Value == null))
{
context.Result = new BadRequestObjectResult("The model cannot be null");
}
}
}
这样我们就不必担心模型在动作中为空。
[HttpPost]
[CheckModelForNull]
public async Task<SomeObject> Post([FromBody]InputData inputData)
{
// My attribute protects me from null
// ...
return myObject;
}