我有一个用 ASP.NET MVC 4 框架编写的 Web 服务。它的基本 CRUD 操作可以很好地映射到 REST 动词,但是我需要添加一个不需要添加的操作。
什么是正确的方法来指定有时在 URL 末尾传递一个 ID 的能力,你知道这将是一个 Integer 类型,有时它是一个“动作”,一个 String 类型,后跟一个斜杠和一个 int ID?需要有关正确路由器地图的帮助。
想法?注意:我更关心 WebAPI,而不是 100% REST。
示例 URL
// GET 小部件列表
http://somedomain.com/api/widget
// GET 特定小部件
http://somedomain.com/api/widget/1
// POST - 对特定小部件执行特殊操作 - 提升
http://somedomain.com/api/widget/promote/1
这是处理它的正确方法吗?
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "DefaultApiExtended",
routeTemplate: "api/{controller}/{action}/{id}"
);