LP1*_*P13 10 content-negotiation asp.net-web-api2 asp.net-core
我正在使用.NET Core开发ASP.NET Web API.此Web API将主要由UI应用程序访问(UI将使用ASP.NET Core MVC开发),但在将来API也可以由其他应用程序访问.
在我的WEB API中,所有方法都是异步的.
如果我希望客户端进行内容协商,那么应该是API操作方法的返回类型Task<IActionresult>或Task<SomePOCO>
如果我希望方法总是以JSON格式返回数据,那么API动作方法的返回类型应该是什么?它应该是Task<IActionResult>或Task<JsonResult>还是Task<SomePOCO>因为我认为所有3将工作,所以不知道哪一个是合适的吗?
Sha*_*tin 10
如果我希望[客户]进行内容协商,那么API动作方法的返回类型应该是什么?
做内容协商,返回Task<ObjectResult>或Task<MyPoco>.
框架自动包装POCO ObjectResult; 因此,两个选项都是等价的,并且都将遵循HTTP Accept标头.您还将通过返回实现的任何结果来获得内容协商ObjectResult,例如OkObjectResultdo.
如果我希望[the]方法总是以JSON格式返回数据,那么API动作方法的返回类型应该是什么?
要始终返回JSON,请返回Task<JsonResult>(或使用[Produces]过滤器).
另见:https://docs.asp.net/en/latest/mvc/models/formatting.html#content-negotiation
[S] o我假设那时
IActionResult只用于MVC控制器?
IActionResult是返回的所有结果的合同Controller.如果你的动作的签名有一个IActionResult返回类型,那么你的动作的方法体可以是return任何结果类型,因为它们都实现了IActionResult接口.这是继承层次结构.
IActionResult
ActionResult
ChallengeResult
ContentResult
EmptyResult
FileResult
FileContentResult
FileStreamResult
PhysicalFileResult
VirtualFileResult
ForbidResult
LocalRedirectResult
ObjectResult
CreatedAtActionResult
CreatedAtRouteResult
CreatedResult
BadRequestObjectResult
NotFoundObjectResult
OkObjectResult
RedirectResult
RedirectToActionResult
RedirectToRouteResult
SignInResult
SignOutResult
StatusCodeResult
NoContentResult
NotFoundResult
OkResult
UnauthorizedResult
UnsupportedMediaTypeResult
BadRequestResult
Run Code Online (Sandbox Code Playgroud)
另请参阅:https://github.com/aspnet/Mvc/tree/dev/src/Microsoft.AspNetCore.Mvc.Core
| 归档时间: |
|
| 查看次数: |
7725 次 |
| 最近记录: |