Asp.net

在 API 方法中返回 HttpStatusCode

  • March 25, 2016

如果出現問題,如何從 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;
}

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;
}

引用自:https://stackoverflow.com/questions/35167416