2016-08-31 6 views
1

データベースからデータを公開するMVCソリューションがあります。クライアントが複数のパラメータでフィルタリングできるようにする

彼らはHTTPGETと私のコントローラはクライアントにデータを提供する発行:

[HttpGet] 
[Route("{someGuid:guid}")] 
public HttpResponseMessage Get([FromUri] Guid? someGuid) 
{ 
    var responseData = _someService.RecordSet.Where(x=>x.guid == someGuid); 

    return Request.ResponseMessageFromApiEntity(responseData); 
} 

どのように私は、クライアントが複数のパラメータの組み合わせで要求を発行できるようにするための方法を実装するだろうか?彼らは2または5または10まで渡すことができ、私はそれらのパラメータでデータセットをフィルタリングする必要があります。

+0

を活用してください。コントローラーは、どれが使用されているか把握するのに十分スマートです。次のようなものがあります:www.YourURL/api/controller?var1 = value&var1 = value public IHttpActionResult – JaredStroeb

+0

Hondaを渡すことを決定したらどうなりますか? –

+0

この記事を試してください。 http://www.tugberkugurlu.com/archive/asp-net-web-api-catch-all-route-parameter-binding。パラメータを分割するデリミネータを設定するだけです。私は主にWeb APIを使用しているので、HTTP要求本体にオブジェクトを貼り付けるだけです。 – JaredStroeb

答えて

0

は、私は、複数のgetエンドポイントを持つPipes and Filters Pattern

[HttpGet] 
[Route("{someGuid:guid}")] 
public HttpResponseMessage Get([FromUri] Guid? someGuid, [FromUri] int someInt) 
{ 
    var responseData = _someService.RecordSet.AsQueryable(); // or some base query or equivalent 
    if (someGuid.HasValue) 
    { 
     responseData = responseData.Where(x=>x.guid == someGuid); 
    } 

    if (someInt.HasValue) 
    { 
     responseData = responseData.Where(x=>x.int == someInt); 
    } 

    return Request.ResponseMessageFromApiEntity(responseData); 
} 
関連する問題