.NETCoreを使用してASP.NETWebAPIを開発しています。このWebAPIは主にUIアプリケーションによってアクセスされる予定です(UIはASP.NET Core MVCを使用して開発されます)が、将来的には他のアプリケーションからもアクセスされる可能性があります。
私のWEBAPIでは、すべてのメソッドが非同期です。
クライアントにコンテンツネゴシエーションを実行させたい場合、APIアクションメソッドの戻り値の型は何である必要がありますかTask<IActionresult>
またはTask<SomePOCO>
メソッドが常にJSON形式でデータを返すようにしたい場合、APIアクションメソッドの戻り値の型は何である必要がありますか? Task<IActionResult>
またはTask<JsonResult>
またはTask<SomePOCO>
3つすべてが機能すると思うので、ここでどれが適切かわからないのですか?
クライアントにコンテンツネゴシエーションを実行させたい場合、APIアクションメソッドの戻り値の型は何である必要がありますか?
コンテンツネゴシエーションを行うには、Task<ObjectResult>
またはTask<MyPoco>
を返します。
フレームワークは、POCOをObjectResult
で自動的にラップします。そのため、両方のオプションは同等であり、どちらもHTTP Accept
ヘッダーに従います。また、ObjectResult
のように、OkObjectResult
を実装する結果を返すことで、コンテンツネゴシエーションを取得します。
[the]メソッドで常にJSON形式でデータを返すようにしたい場合、APIアクションメソッドの[the]戻り値の型はどうあるべきですか?
常にJSONを返すには、Task<JsonResult>
を返します(または[Produces]
フィルターを使用します)。
参照: https://docs.asp.net/en/latest/mvc/models/formatting.html#content-negotiation
[S] o
IActionResult
はMVCコントローラーにのみ使用されると思いますか?
IActionResult
は、Controller
が返すall結果のコントラクトです。アクションのシグネチャに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
参照: https://github.com/aspnet/Mvc/tree/dev/src/Microsoft.AspNetCore.Mvc.Core
闊歩を見てください: https://docs.Microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger ProducesResponseType属性を指定することをお勧めしますメソッドの場合:
[ProducesResponseType(typeof(TodoItem), 201)]
public IActionResult Create([FromBody, Required] TodoItem item)
そのため、メソッドに対して実際に返されるデータを表示するために、自動的に生成されたSwaggerドキュメント。