2012-04-12 47 views
3

我是REST服務的新手,一直在研究ASP.Net Web API的示例。我想這樣做的是擴大該獲取方法:如何使用ASP.Net Web API發送密鑰列表並返回密鑰/值列表?

[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

通過查詢字符串值,你可以用一個單場

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 /價值/ FilterList?idList = 1 & idList = 2

+0

謝謝,我明白你在做什麼。我會試一試併發布我的結果。我很感激你花時間回答。 – lonnieB 2012-04-15 18:05:33

+0

請注意,在WebApi RC中,您需要在方法簽名中的idList參數中包含[FromUri]屬性。詳情請看這裏:http://stackoverflow.com/questions/10934077/ – 2012-07-16 15:05:48