2013-05-03 67 views
2

我有一個名爲PIM(產品信息管理器)的數據模型,要求我爲每個請求傳遞一個公司AppId。因此,如果我想獲得所有產品,我會傳遞公司AppId和資源ID。如何可以乾淨地構建MS Web Api的REST API端點?

我想我的結構REST端點乾淨利索,我想出了這一點:

http://api.example.com/pim/44/products/ -- Gets all products in company 44 
http://api.example.com/pim/44/products/123 -- Get product 123 in company 123 

這是實現這一目標的最佳方式是什麼?

我打算讓我的默認控制器pim/{appId}/{controller}/{id}

我會遇到問題,我的MVC的路線,如果我這樣做呢? 如何在我的GET方法中訪問{appId}令牌?

回答

5

你可以像你描述有路線,並用它

routes.MapHttpRoute(
    name: "Default", 
    routeTemplate: "pim/{appId}/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

而在你的控制你有以下幾種方法:

public class ProductsController : ApiController 
{ 
    public Product Get(int appId, int id) { ... } 
    public List<Product> Get(int appId) { ... } 
} 

由於參數名稱(APPID,ID )匹配路由參數時,ASP.NET Web API應在調用操作時將URL值綁定到參數。

+0

太棒了!簡單而重要!約定超過配置。愛它。 – Armstrongest 2013-05-03 05:15:21