我有一个名为 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
这是实现此目的的最佳方式吗?
我计划制作我的默认 Controller pim/{appId}/{controller}/{id}
如果我这样做,我的 MVC 路由会遇到问题吗? 如何在 GET 方法中访问 {appId} token ?
最佳答案
您可以拥有您所描述的路线,并使用它
routes.MapHttpRoute(
name: "Default",
routeTemplate: "pim/{appId}/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在你的 Controller 中你将有以下方法:
public class ProductsController : ApiController
{
public Product Get(int appId, int id) { ... }
public List<Product> Get(int appId) { ... }
}
由于参数名称(appId、id)与路由参数匹配,因此 ASP.NET Web API 应在调用操作时将 URL 值绑定(bind)到参数。
关于c# - 如何干净地构建 MS Web Api 的 REST API 端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351146/