asp.net-mvc - ASP.net MVC 4 WebApi 中的嵌套资源

标签 asp.net-mvc rest asp.net-web-api

在新的 ASP.net MVC 4 WebApi 中是否有比为每个资源设置特殊路由更好的方法来处理嵌套资源? (类似于此处:ASP.Net MVC support for Nested Resources? - 这是在 2009 年发布的)。

例如我想处理:
/customers/1/products/10/
我看过一些 ApiController 的例子除 Get() 以外的其他操作, Post()等,例如 here我看到一个名为 GetOrder() 的操作示例.不过,我找不到任何关于此的文档。这是实现这一目标的方法吗?

最佳答案

抱歉,我已经多次更新了这个,因为我自己正在寻找解决方案。
似乎有很多方法可以解决这个问题,但到目前为止我发现的最有效的是:
在默认路由下添加:

routes.MapHttpRoute(
    name: "OneLevelNested",
    routeTemplate: "api/{controller}/{customerId}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
然后,此路由将匹配 URL 中的任何 Controller 操作和匹配的段名称。例如:
/api/customers/1/orders 将匹配:
public IEnumerable<Order> Orders(int customerId)
/api/customers/1/orders/123 将匹配:
public Order Orders(int customerId, int id)
/api/customers/1/products 将匹配:
public IEnumerable<Product> Products(int customerId)
/api/customers/1/products/123 将匹配:
public Product Products(int customerId, int id)
方法名称必须与路由中指定的 {action} 段匹配。

重要的提示:
来自评论
由于RC,您需要告诉每个 Action 可以接受哪种动词,即[HttpGet] , 等等。

关于asp.net-mvc - ASP.net MVC 4 WebApi 中的嵌套资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594671/

相关文章:

.net - 是否没有办法扩展 ASP.Net 表单例份验证,以便 session 可以扩展到 iisreset 之外?

c# - 注入(inject)属性(递归)而不将其作为参数传递

c# - 如何在 ASP MVC 应用程序中启用代码优先迁移?

java - 为什么我的 REST API 在嵌套对象上返回空白 JSON?

mysql - 'DbContextOptionsBuilder' 不包含 'UseSqlServer' 的定义

c# - 如何在 Asp.Net Web API 上实现 Https/SSL 连接?

c# - 使用 TCPDF 在 ASP.NET MVC 中生成 PDF

rest - Restful 服务上的数据加密

java - 从java中的RestController返回多种(xml和json)格式

asp.net-mvc - 如何在 MVC4 中调用自定义模型绑定(bind)器?