3

私は REST サービスを初めて使用し、ASP.Net Web API の例に取り組んできました。私がやりたいことは、この Get メソッドを拡張することです。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ProductsController : ApiController
{
    public IEnumerable<Product> GetAllProducts()
    {
        return new List<Product> 
        {
            new Product() { Id = 1, Name = "Gizmo 1", Price = 1.99M },
            new Product() { Id = 2, Name = "Gizmo 2", Price = 2.99M },
            new Product() { Id = 3, Name = "Gizmo 3", Price = 3.99M }
        };
    } ...

製品のリストを送信し、すべての価格が返されるものに、概念的には次のようになります。

    public IEnumerable<Product> GetProducts(string[] ProductNames)
    {
        var pList = new List<Product>; 
        foreach (var s in ProductNames)
        {
            //Lookup price
            var LookedupPrice = //get value from a data source
            pList.Add(new Product() { Id = x, Name = s, Price = LookedUpPrice });

        }
        return pList;
    }

何かアイデアはありますか? REST 呼び出しはどのようになりますか? JSON オブジェクトを渡す必要があると考えていましたが、よくわかりません。

4

1 に答える 1

4

クエリ文字列値を使用すると、複数の値を 1 つのフィールドに関連付けることができます

public class ValuesController : ApiController
{
    protected static IList<Product> productList;
    static ValuesController()
    {
        productList = new List<Product>()
        {
            new Product() { Id = 1, Name = "Gizmo 1", Price = 1.99M },
            new Product() { Id = 2, Name = "Gizmo 2", Price = 2.99M },
            new Product() { Id = 3, Name = "Gizmo 3", Price = 3.99M }
        };
    }                
    public IEnumerable<Product> Get(IEnumerable<int> idList)
    {
        return productList;
    }
}

デフォルトのルートを使用して、次のエンドポイントに GET リクエストを送信できるようになりました

/api/values/FilterList?idList=1&idList=2

于 2012-04-14T04:12:29.517 に答える