C# 参考路由和Web API
我在一些路线上遇到了一些问题。首先,请看这篇文章: 我不确定如何实际创建该答案的路线,因此我开始这样做:C# 参考路由和Web API,c#,routes,asp.net-web-api,C#,Routes,Asp.net Web Api,我在一些路线上遇到了一些问题。首先,请看这篇文章: 我不确定如何实际创建该答案的路线,因此我开始这样做: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); //Art
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//Artist/////////////////////////////
config.Routes.MapHttpRoute(
name: "ArtistAlbum",
routeTemplate: "api/artist/{id}/album",
defaults: new { controller = "ArtistAlbum" }
);
////////////////////////////////////
但是第一条路线也可以通过简单地导航到/api/ArtistAlbum/{artistid}/album
来发布、获取等等,这不是我想要的
我想限制用户只能使用/api/artist/{id}/album
路径获取、发布、放置、删除等。有什么想法吗
如果你问我的话,手动创建大量路由之后,任何关于如何执行此操作的建议似乎都不是很好。这里的顺序很重要。如果希望
api/artist/{id}/album
优先于api/artist/{id}
,则需要将调用顺序切换到config.Routes.maphttroute
这样一来,
api/artist
路线将优先于api/任何东西
是的。。我一直忘了这一点,谢谢:)但是如果“客户”会发表一篇针对/api/ArtistAlbum的帖子呢。。我不希望那成为可能。。因为我想强制客户端使用另一个路由(api/artist/{id}/album)。。还是我在这里遗漏了什么?为什么不让他们知道呢?但是,您可以使用config.Routes.IgnoreRoute(“api/ArtistAlbum/*”)代码>我相信这会起作用,但是*语法可能会关闭。它可能必须是{*}
啊哈,好的,谢谢,那太好了:)唯一的原因是我只想用一种方法来创建相册以避免混淆。。我也不希望ArtistAlbum控制器可以通过{controller}/{action}/{id}路由“直接”访问。。但是。。我想这更多的是关于如何构造api的个人“品味”: