0

私はODataのV4更新のブログ読んでいます:https://blogs.msdn.microsoft.com/webdev/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0/ODataの属性は、ルーティング:複数のデータ型のための1つのコントローラ

それは、ルーティング属性に新しく追加された[ODataRoute]属性に言及しています。従来のWebApiControllerでは、複数の種類の[Route]属性を使用してルートを指定できます。たとえば、旅行とホテルの2つのクラスがあるとします。私はによってそれらの両方のための1つのコントローラを持つことができます:ODataのスタックと

public class DefaultController : WebApiController { 
[Route("travel/{id}")] 
[Route("hotel/{id}")] 
public HttpResponseMessage Get(int id) 
{ 
    // Implementation here 
} 

、各データ型は、私は2つのコントローラを必要とする意味デフォルトでは、コントローラに接続されてい:

public class TravelController : ODataController{ } 

public class HotelController : ODataController{ } 

のでありODataControllerとODataRouteを使用して複数のデータ型を1つのコントローラにルーティングする方法?

答えて

2

あなたはこのように行うことができ、

public class MyController : ODataController 

{ 
    [HttpGet] 
    [ODataRoute("Airlines({id})")] 
    [ODataRoute("People({id})")] 
    public IHttpActionResult Get([FromODataUri] string id) 
    { 
     return Ok("Empty"+id); 
    } 
} 

私はそれがうまく機能し、これを確認し、コントローラ名を書き留め

ではありません(私は[ODataRoute]で[ルート]を交換するだけでしようとしたが、それはうまくいきませんでした)任意のエンティティセット名から開始します。あなたはすべてのコントローラを書きたくない場合は

また、あなたはすべての要求を処理するために、単一の定義済みのコントローラを使用します。このライブラリhttp://odata.github.io/RESTier/を参照することができます。

関連する問題