2

我有一个名为 PIM(产品信息管理器)的数据模型,它要求我为每个请求传递一个公司 AppId。因此,如果我想获得所有产品,我会传递公司 AppId 和资源 ID。

我正在尝试以一种干净的方式构建我的 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} 令牌?

4

1 回答 1

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 值绑定到参数。

于 2013-05-03T03:39:25.860 回答