10

「GET」を介してWeb APIをクエリする方法はありますが、そのパラメータに複雑なオブジェクトがありますか?

これまでに見たすべての例は、「POST」を使用する必要があることを示しているようです。しかし、これはクエリであるため、「POST」を使用したくありません。同時に、16個の引数を持つ関数は、もろくなるため、使用したくありません。

public Product Get(int id, string name, DateTime createdBy, string stockNumber, ... ) 
    { 
          ...
    }

上記を次のように変更したい:

public Product Get(ProductQuery query) 
    { 
          ...
    }

これを行う方法はありますか?また、上記のサービスで HttpClient を機能させるにはどうすればよいですか。

4

2 に答える 2

23

ProductQueryパラメータを渡すことができます[FromUri]

ProductQueryこれがあなたのクラスだとしましょう:

public class ProductQuery
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime CreatedBy { get; set; }
    public string StockNumber { get; set; }
}

アクションパラメーターに注釈を付けることができます[FromUri]...

    public Product Get([FromUri] ProductQuery productQuery)
    {...}

... および have プロパティProductQuery(つまり、、、Id... Name) は、Uri のクエリ文字列から渡すことができます。

http://.../api/products?Id=1&Name=Product1&CreatedBy=1/4/2013&StockNumber=ABC0001
于 2013-01-04T22:13:41.313 に答える
3

Web API での OData のサポートを見たいと思うかもしれません。クエリの実装がどれほど複雑かによって異なります。

http://blogs.msdn.com/b/alexj/archive/2012/08/15/odata-support-in-asp-net-web-api.aspx

于 2013-01-04T19:05:31.983 に答える