Web api似乎只适用于标准用例。 但我想做更复杂的路由,但找不到复杂路由的文档。 如果我有更多的控制器,路由会变得越来越复杂。ASP.NET 4 MVC Web API:复杂路由的文档
我可以用依赖性定义几个可选参数吗? 像这样:
/api/document/{par1}/{par2}
PAR1 & par2的应该是可选的,但应该PAR2 PAR1是否存在只匹配。
而递归参数可能吗?
/api/documents/characteristics/{round/green/red-dots}
/api/documents/characteristics/{square/yellow}
/api/documents/characteristics/{square/yellow/flat}
/api/documents/characteristics/{square/yellow/flat/...}
有没有web api路由的详细文档?微软的教程太简单了...... 我需要更多关于路由的信息。
我有两个控制器和一些麻烦,因为两个路由非常相似,所以采取了错误的路线。我可以使用[动作] - 属性作为解决方法,但这种感觉不正确...我也必须考虑路线的顺序。这是合乎逻辑的,但没有提到。 Web api仅适用于简单的休息API吗?
编辑: 我尝试这样做:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{mandant}/documents/{id}",
defaults: new { controller = "documents", id = RouteParameter.Optional }
);
//routes.MapHttpRoute(
// name: "DefaultApiWithAction",
// routeTemplate: "api/{mandant}/documents/{id}/{action}",
// defaults: new { controller = "documents" }
// );
我有两种方法:
[AcceptVerbs("get")]
public HttpResponseMessage Get(int id)
[ActionName("file")]
[AcceptVerbs("get")]
public HttpResponseMessage filedownload(int id)
现在我有问题,该文件的动作被触发,即使我注释掉第二条路线和正常的获取特定的文档方法不会被触发,因为多个动作...我尝试了[NoAction]属性,但是这个我s不工作... 但是,如果route-template中没有任何操作,为什么会触发file-method? (或者如果第二条路线是活动的,为什么正常的get-document方法不会被触发,如果网址中没有动作......) 我目前的解决方法是为所有其他方法设置默认行为,但这不是一个好的解决方案。
设置控制器的静态默认应该处理的路线冲突。你可以使用约束对我来说是新的。谢谢。一个好的web api路由的微软文档将会很棒。我还发现你可以使用*作为catch-all参数,像这样{* param},但它必须在url的末尾。 – user437899
我发现了asp.net路由的通用文档:http://msdn.microsoft.com/en-us/library/cc668201.aspx – user437899