gpt4 book ai didi

asp.net - 在API方法中返回HttpStatusCode

转载 作者:行者123 更新时间:2023-12-04 03:42:55 25 4
gpt4 key购买 nike

如果有问题,如何从ASP.NET Core 1.0中的API方法返回HttpStatus代码?

如果该方法应该返回特定的对象类型,则当我尝试返回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;
}

最佳答案

而是从您的 Controller 操作中返回一个IActionResult:

public async Task<IActionResult> Post([FromBody] InputData inputData)
{
if(inputData == null)
{
return new HttpStatusCodeResult((int) HttpStatusCode.BadRequest);
}

//...

return Ok(myObject);
}

如果您想从 Controller 中删除此类空检查,则可以定义一个自定义属性:
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");
}
}
}

这样,我们就不必为 Action 中的模型为空而烦恼。
[HttpPost]
[CheckModelForNull]
public async Task<SomeObject> Post([FromBody]InputData inputData)
{
// My attribute protects me from null
// ...
return myObject;
}

关于asp.net - 在API方法中返回HttpStatusCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35167416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com