用于高级搜索/过滤的.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 – 承载令牌在重新部署后变为无效
热点阅读
