私はwebapi、MVC4プロジェクトで作業しています。(リポジトリパターンと作業単位を使用)2つの質問があります
1)WebApiのGetByIdは、エンティティまたはHttpResponseMessageを返す必要がありますか?HttpResponseMessageの場合は、...
[System.Web.Http.HttpGet]
public HttpResponseMessage Get(int id)
{
var car = Uow.Cars.GetById(id);
return car == null ? Request.CreateResponse(HttpStatusCode.OK, car) : Request.CreateResponse(HttpStatusCode.NotFound,);
}
また
[System.Web.Http.HttpGet]
public HttpResponseMessage Get(int id)
{
var car= Uow.Cars.GetById(id);
if (car!= null) {
return car;
}
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
}
RESTfullの応答をフォローしたいと思います。
2)WebAPIサービスをUIから分離することは論理的ですか?つまり、1つのwebapiプロジェクトでは、ベースApiControllerとCRUD http操作を備えたコントローラーを使用して、どこからでも/任意のデバイスから直接呼び出すことができます。次に、webapiプロジェクトのサービスを呼び出す別のwebapi / MVC4プロジェクトですか?
同じコントローラーにビューを返すサービスと処理があると、サービスを消費するクライアントにサービスを結合するように聞こえるので、これを求めています。
例:これから(同じwebapiコントローラー内で):
[System.Web.Http.HttpGet]
public HttpResponseMessage Get(int id)
{
var car = Uow.Cars.GetById(id);
return car!= null ? Request.CreateResponse(HttpStatusCode.OK, car) : Request.CreateResponse(HttpStatusCode.NotFound,);
}
public ViewResult Details(long id)
{
return View(Get(id));
}
これに移動します:
public ViewResult Details(long id)
{
return View(webapiService.Cars.Get(id));
}
Get intheserviceを実装する。