通常のMVCコントローラーとWebAPIコントローラーを含むWebMVCアプリがあります。
同じプロジェクトで通常のMVCコントローラーアクションからWebAPIコントローラーを呼び出す適切な方法は何ですか?
通常のMVCコントローラーとWebAPIコントローラーを含むWebMVCアプリがあります。
同じプロジェクトで通常のMVCコントローラーアクションからWebAPIコントローラーを呼び出す適切な方法は何ですか?
ASP.Net Web API は、サーバー側のロジックからではなく、HTTP 経由で呼び出されることを意図しています。おそらく、レンダリングされたプレゼンテーションは、クライアント側の要求 (ajax など) を介して Web API を呼び出すことができます。
MVC コントローラーのアクションが、Web API アクションでのみ使用可能なコードを実行する必要がある場合は、そのコードを Web API から切り離し、コードのプラットフォームに依存しない領域に移動することを検討する必要があります。 (サービス層?)。
MVCコントローラーからWEBAPIサービスを呼び出すことはアンチパターンですか?を参照してください。
簡単に言うと、APIにアクセスするにはhttpclientを使用します。
JSON (または類似のもの) をクライアントに送り返すだけの方法が必要な場合は、MVC コントローラーからビュー以外のものを返すことを選択できます。その後、すべて MVC Web アプリ内で処理されるため、Web API を使用する必要はありません。
public JsonResult DetailsJson(int id)
{
Car car = carRepository.Find(id);
return Json(car, JsonRequestBehavior.AllowGet);
}
この例は、次を使用して呼び出されます
/Cars/DetailsJson/3
テスト上の理由から、(JsonRequestBehavior.AllowGet を追加することにより) サンプルで GET が許可されていることに注意してください。POST 要求のみをサポートする場合は、削除される可能性があります。