HTTP Response 数据出关
对WebAPI 而言Controller中的Action 都是返回 IActionResult 或者 ActionResult<T>. 通常有一下几种返回内容
1. 只有状态码
对于没有返回值的Post请求,也可以返回一个空的Task(没返回值,但是有网络状态,而且200.)
[HttpPost] public Task SingleFormular([FromBody] SingleFormularInputDto singleVolumeInputDto) { ApplicationService.CreateSingleFormular(singleVolumeInputDto); return Task.CompletedTask; }
如果是创建什么东西一般返回201 这样才有意义,也更符合HTTP协议。或者返回创建成功后的链接地址。更加符合Restfull API.
public IActionResult SingleFormular([FromBody] SingleFormularInputDto singleVolumeInputDto) { ApplicationService.CreateSingleFormular(singleVolumeInputDto); return StatusCode(StatusCodes.Status201Created); }
具体的 return StatusCode(Microsoft.AspNetCore.Http.StatusCodes....) 很多类型.自己点出来下拉看。
这种的返回值一般是IActionResult.
2.带状态码的对象,内置的ObjectResult, 这些类都继承自ObjectResult.比如 OkObjectResult, CreatedResult,NoFoundObjectResult 等等。
3.重定向结果
1. Redirect("www.microsoft.com")
2. LocalRedirect("/account/login")
3. RedirectToAction("login")
4. RedirectToRoute("RouteName", new{ action="login",controller="account"})
4. 内容结果 View,WEB项目多用
比如ViewResult, JsonResult,ContentResult,
5. 内容的扩展,普通对象 .netcore 2.1 后支持普通对象的返回。