星空网 > 软件开发 > ASP.net

ASP.NET Web API中把分页信息放Header中返回给前端

 

谈到ASP.NET Web API的分页,考虑的因素包括:

1、上一页和下一页的uri
2、总数和总页数
3、当前页和页容量

接着是服务端的数据以怎样的形式返回?

我们通常这样写:

{
    totalCount:10,
    result: [
        {id:1, name:"a"},
        {id:2, name:"b"}
    ]
}

以上,把分页相关和实体信息以json格式返回给前端。但在本篇,尝试另外一种方式:把分页信息放在Header中返回给前端。

const int maxPageSize = 10;[Route("api/items", Name="items")]public IHttpActionResult Get(int page = 1, ing pageSize = 5){  try  {    var items = _repo.GetItem()      .sort()      .Where();          if(pageSize > maxPageSize)    {      pageSize = maxPageSize;    }        var totalCount = items.Count();    var totalPages = (int)Math.Ceiling((double)totalCount/pageSize);        var urlHelper = new UrlHelper(Request);    var prevLink = page > 1 ? UrlHeloer.Link("items", new {      page = page -1,      pageSize = pageSize,      ...    }) : "";        var nextLink = page < totalPages? urlHelper.Link("items", new {      page = page + 1,      pageSize = pageSize,      ...    }) : "";        var paginationHeader = new     {      currentPage = page,      pageSize = pageSize,      totalCount = totalCount,      totalPages = totalPages,      previousPageLink = prevLink,      nextPageLink = nextLink    };        //放到Header中    HttpContext.Current.Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationHeader));        var result = items      .Skip(pageSize * (page - 1))      .Take(pageSize)      .ToList()      .Select(e => ItemFactory.CreateItem(e));          return Ok(result);        }  catch(Exception)  {    //TODO:处理异常  }}

 

客户端发出如下请求:

localhost:4321/api/items?page=2&pagesize=2

在响应中有一个X-Pagination属性:

X-Pagination:{
    "currentPage":2,
    "pageSize":2,
    "totalPages":4,
    "previousPageLink": "http://localhost:4321/api/items?page=1&pageSize=2"
    "nextPageLink":"http://localhost:4321/api/items?page=3&pageSize=2"
}

 




原标题:ASP.NET Web API中把分页信息放Header中返回给前端

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

存量时代:https://www.goluckyvip.com/tag/133.html
经贸合作:https://www.goluckyvip.com/tag/1330.html
b8ta:https://www.goluckyvip.com/tag/13300.html
新账号上新:https://www.goluckyvip.com/tag/13301.html
英国将脱欧:https://www.goluckyvip.com/tag/13302.html
FBA禁止发货:https://www.goluckyvip.com/tag/13304.html
深圳到西安自驾路线攻略 深圳到西安自驾最佳路线:https://www.vstour.cn/a/411228.html
松花蛋是哪里的特产松花蛋的产地:https://www.vstour.cn/a/411229.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流