Asp.net
在 API 方法中返回 HttpStatusCode
如果出現問題,如何從 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; }