ehd*_*hdv 4 asp.net-mvc asp.net-mvc-routing asp.net-web-api
我正在尝试使用新的ASP.NET Web API执行以下操作:
/api/business/{id}获取业务目录信息的GET .对同一URL的PUT更新信息等.该部分工作正常.当我想要添加以前曾经是一个动作的内容时,我遇到的问题就是查看该业务的评论.理想情况下,我希望在/api/business/{id}/reviewsGET返回评论,POST提交新评论等等时可以访问.
在普通的ASP.NET MVC应用程序中,我可以定义两个操作方法(Review和PostReview),然后使用属性来更改操作名称并接受第二个函数的HTTP方法.我希望有一些方法可以在新系统中使用类,但我无法弄清楚它是什么,我在文档中没有看到任何关于这个问题的内容.
使用领域也没有工作,尽我可以告诉:我需要的/business/{id}URL的工作,并打破区域.
Mik*_*son 13
Web API确实支持按行为进行路由,因此您可以执行以下操作:
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new { action = "DirectoryInfo", id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
控制器方法:
[HttpGet]
[ActionName("DirectoryInfo")]
public void GetDirectoryInfo(int id)
[HttpPut]
[ActionName("DirectoryInfo")]
public void PutDirectoryInfp(int id)
[HttpGet]
public void Review(int id)
[HttpPost]
[ActionName("Review")]
public void PostReview(int id)
Run Code Online (Sandbox Code Playgroud)
另一种选择是创建两个控制器,BusinessController和ReviewController,并创建以下路由:
routes.MapHttpRoute(
name: "BusinessRoute",
routeTemplate: "api/business/{id}",
defaults: new { controller = "Business", id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "reviewsRoute",
routeTemplate: "api/contacts/{id}/reviews/",
defaults: new { controller = "Reviews", id = RouteParameter.Optional}
);
Run Code Online (Sandbox Code Playgroud)
然后使用Web API样式的隐式动作名称.
| 归档时间: |
|
| 查看次数: |
4650 次 |
| 最近记录: |