asp.net – URL中的Web API嵌套资源
我正在创建我的第一个ASP.NET Web API.我试图遵循标准的REST URL.我的API会返回搜索结果记录.我的网址应该是 –
../api/categories/{categoryId}/subcategories/{subCategoryId}/records?SearchCriteria 我打算使用oData进行搜索和IIS上的基本/摘要式身份验证.我的问题在于嵌套资源.在我返回搜索结果之前,我需要检查用户是否可以访问此类别和子类别. 1.RouteConfig.cs routes.MapRoute( name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home",action = "Index",id = UrlParameter.Optional } ); 2.WebApiConfig.cs config.Routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional } ); 使用此模型,如果我的URL是../api/records?SearchCriteria,它可以正常工作,但它不是我上面提到的URL设计.我知道我必须做更多的阅读,但到目前为止还没有找到正确的文章.需要您的建议如何实现我的URL以及这两个文件需要进行哪些更改.或者,我在这里缺少一些其他配置吗?提前致谢. 解决方法
Asp.net Web API 2提供开箱即用的属性路由.您可以在单个操作方法或全局级别定义Route.
例如: [Route("customers/{customerId}/orders/{orderId}")] public Order GetOrderByCustomer(int customerId,int orderId) { ... } 您还可以使用[RoutePrefix]属性为整个控制器设置公共前缀: [RoutePrefix("api/books")] public class BooksController : ApiController { // GET api/books [Route("")] public IEnumerable<Book> Get() { ... } // GET api/books/5 [Route("{id:int}")] public Book Get(int id) { ... } } 您可以访问this链接以获取有关Web API 2中的属性路由的更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |