用于高级搜索/过滤的.Net WebAPI URI约定
发布时间:2020-12-16 07:36:15 所属栏目:asp.Net 来源:网络整理
导读:我对微软的REST和WebAPI比较陌生.我们正在实现一个中心REST服务,它将容纳几种类型的对象获取和设置.作为该项目的领导者,我的任务是提出我们正在进行的适当的Uri设计.我想知道关于战争的想法更好.是的,我没有使用“标准”这个词专门定期. 以下是我的团队和我
我对微软的REST和WebAPI比较陌生.我们正在实现一个中心REST服务,它将容纳几种类型的对象获取和设置.作为该项目的领导者,我的任务是提出我们正在进行的适当的Uri设计.我想知道关于战争的想法更好.是的,我没有使用“标准”这个词专门定期.
以下是我的团队和我目前正在娱乐的选项: Http://servername/API/REST/Ldap/AD/employees?username=jsmith Http://servername/API/REST/Ldap/AD/employee/UserName?searchTerm=jsmith (this seems RPC to me) Http://servername/API/REST/Ldap/AD/employees/getusername?searchterm?jsmith 我们也在创建一个Soap版本,因此其余的在Uri. 感谢您的投入 解决方法
对于Oppositional的评论,这是我不久前提出的.
https://groups.google.com/d/msg/servicestack/uoMzASmvxho/CtqpZdju7NcJ public class QueryBase { public string Query { get; set; } public int Limit { get; set; } public int Offset { get; set; } } [Route("/v1/users")] public class User : IReturn<List<User>> { public string Id { get; set; } public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } public string Email { get; set; } } public class RequestFilterAttribute : Attribute,IHasRequestFilter { #region IHasRequestFilter Members public IHasRequestFilter Copy() { return this; } public int Priority { get { return -100; } } public void RequestFilter(IHttpRequest req,IHttpResponse res,object requestDto) { var query = req.QueryString["q"] ?? req.QueryString["query"]; var limit = req.QueryString["limit"]; var offset = req.QueryString["offset"]; var user = requestDto as QueryBase; if (user == null) { return; } user.Query = query; user.Limit = limit.IsEmpty() ? int.MaxValue : int.Parse(limit); user.Offset = offset.IsEmpty() ? 0 : int.Parse(offset); } #endregion } [Route("/v1/users/search","GET")] [RequestFilter] public class SearchUser : QueryBase,IReturn<PagedResult<User>> { } public class UsersService : Service { public static List<User> UserRepository = new List<User> { new User{ Id="1",FirstName = "Michael",LastName = "A",Email = "michaelEmail" },new User{ Id="2",FirstName = "Robert",LastName = "B",Email = "RobertEmail" },new User{ Id="3",FirstName = "Khris",LastName = "C",Email = "KhrisEmail" },new User{ Id="4",FirstName = "John",LastName = "D",Email = "JohnEmail" },FirstName = "Lisa",LastName = "E",Email = "LisaEmail" } }; public PagedResult<User> Get(SearchUser request) { var query = request.Query; var users = request.Query.IsNullOrEmpty() ? UserRepository.ToList() : UserRepository.Where(x => x.FirstName.Contains(query) || x.LastName.Contains(query) || x.Email.Contains(query)).ToList(); var totalItems = users.Count; var totalPages = (int)Math.Ceiling((decimal)totalItems / (decimal)request.Limit); var currentPage = request.Offset; users = users.Skip(request.Offset * request.Limit).Take(request.Limit).ToList(); var itemCount = users.Count; return new PagedResult<User> { TotalItems = totalItems,TotalPages = totalPages,ItemCount = itemCount,Items = users,CurrentPage = currentPage }; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 断点当前不会被命中 – 没有可执行代码与此行相
- asp.net表单身份验证将.net 2更改为.net4
- asp.net-mvc – MVC5 Html.RenderAction与不同的控制器
- 应该在ASP.NET页面中完成哪些操作?
- asp.net – 将数组传递给客户端进行显示
- 获取在asp.net中单击错误页面的页面的URL
- 如何返回404状态,无效参数传递给我的ASP.NET MVC控制器?
- asp.net-mvc – HTMLHelper,从属性中生成“Expression> exp
- asp.net – Automapper ninject依赖项
- vbscript – 在赋值中使用Set时“需要对象”
推荐文章
站长推荐
- asp.net-mvc – 具有输出参数的ExecuteSqlComman
- asp.net – 配置节“system.servicemodel”无法读
- asp.net-mvc-3 – System.Web.Mvc.HandleErrorIn
- asp.net-web-api – 设置默认的WebAPI格式化程序
- Visual Studio 2017下ASP.NET CORE的TagHelper智
- 在ASP.net中使用image404和azurereader2
- asp.net – Razor视图引擎intellisense无法正常工
- .net – 什么是类的默认访问修饰符?
- 会话状态信息无效,可能在ASP.Net中已损坏
- asp.net – 承载令牌在重新部署后变为无效
热点阅读