asp.net-core – 什么应该是WEB API Action Method的返回类型?
我正在使用.NET Core开发ASP.NET Web API.此Web API将主要由UI应用程序访问(UI将使用ASP.NET Core MVC开发),但在将来API也可以由其他应用程序访问.
在我的WEB API中,所有方法都是异步的. 如果我希望客户端进行内容协商,那么应该是API操作方法的返回类型任务< IActionresult>或任务< SomePOCO> 如果我希望方法总是以JSON格式返回数据,那么应该返回API动作方法的类型?应该是Task< IActionResult>或任务< JsonResult>或任务< SomePOCO>因为我认为所有3个都会工作所以不确定哪一个适合这里? 解决方法
要进行内容协商,请返回Task< ObjectResult>或任务< MyPoco>. 框架自动将POCO包装在ObjectResult中;因此,两个选项都是等价的,并且都将遵循HTTP Accept标头.您还将通过返回实现ObjectResult的任何结果来获得内容协商,例如OkObjectResult.
要始终返回JSON,请返回Task< JsonResult> (或使用[Produces]过滤器). 另见:https://docs.asp.net/en/latest/mvc/models/formatting.html#content-negotiation
IActionResult是Controller返回的所有结果的合同.如果您的操作的签名具有IActionResult返回类型,那么您的操作的方法体可以返回任何结果类型,因为它们都实现了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 另见:https://github.com/aspnet/Mvc/tree/dev/src/Microsoft.AspNetCore.Mvc.Core (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – HttpContext.Cache到期
- ASP.NET:如何从javascript访问转发器生成的元素?
- asp.net-mvc-3 – IIS 7.5没有注意到MVC 3 app返回的404的c
- asp.net-mvc – 使用ASP.NET MVC的基础认证
- asp.net-mvc – 使用OWIN进行基于区域的身份验证
- asp.net – 为什么不能在发布模式下构建网站?
- asp.net-mvc – 难以启动基本单元测试(样本来自我的书 – S
- ASP.NET CAPTCHA实现
- asp.net – DropDownList烦恼:相同的值不会触发事件
- asp.net-mvc – ASP.NET MVC中基础控制器类的好候选人是什么
- asp.net-mvc – 使用Universal Providers的ASP.N
- asp.net-mvc – 格式化日期只有月份和年份 – “
- ASP.NET客户端与服务器视图呈现
- asp.net 删除项目文件/文件夹IIS重启,Session丢
- asp.net-mvc – Steve Sanderson的BeginCollecti
- asp.net – Microsoft.Jet.OLEDB.4.0未在本地系统
- asp.net-mvc – 为什么UserManager.CreateIdenti
- asp.net – Web.Config文件中的多行文本
- asp.net中一个linq分页实现代码
- 我应该使用ASP.NET构建我的网站以利用我的C#知识