layui分页完整示例_Spring中的REST分页

ea95a4cfad35c9cb7fc8ba6c751c0cd6.png

本文将介绍在REST API中实现分页的基础知识。我们将专注于使用Spring Boot和Spring Data 在Spring MVC中构建REST分页。

分页是一种处理大结果数据集的机制。在REST API中实现分页并没有什么不同,但需要一些额外的思考过程。为REST API提供流畅有效的分页可以增加用户体验并有助于构建高效,快速的REST API。我们使用Spring Boot作为示例。

1.资源与表示

在我们开始设计分页API之前,我们需要清楚地了解页面作为资源或资源的表示。我们需要记住许多基本要素

一个页面Page不是REST中的一个资源,而是其请求的属性。

以资源名称Product为构建分页的例子,在高层次上我们确实有以下三个选项来构建分页。

  • 将产品Product作为资源并使用查询字符串来处理分页以及其他参数,例如排序等。
  • 第二个选项是将页面Page用作资源和查询字符串进行排序。
  • 使用页面Page作为资源和URL部分进行排序。

考虑到上述问题,让我们尝试回答一些在设计REST API分页时有用的问题。

  • 您是否将页面Page视为页面中产品的资源?

请记住,REST API不是围绕任何预定义的规则或规范构建的,所有上述三个选项都是有效的,并且基于上述问题的答案。如果我们将页面视为资源,则选项3是有效选择;但如果我们说页面上的产品是资源,那么选项3不再有效(在第1,2页上的产品可能会在将来更改),就个人而言,我会选择选项1,因为对我来说,页面 Page 不是 资源Resouce,它是请求的属性。

2.可发现性

可发现性 有助于使 RESTful API 更加实用和优雅。使REST API 可被发现经常被忽视。以下是REST API可发现性的高级摘要 。

  • 有了这个功能,REST API在对客户端的响应中提供完整的URI意味着没有客户端需要“组合”URI。
  • 客户端API独立于URI结构。
  • 通过以上2点,API更加灵活,允许开发人员在不破坏API的情况下更改URI架构。(请记住,API提供所有URI,它们不是由客户端API动态创建的)。

可发现性与REST API中的HATEOAS密切相关。REST API分页可发现将通过"next","previous","first"和"last"链路作为响应数据的一部分。我们正在考虑如何在分页期间将此功能添加到您的API。

9c3fa84440be7705d3875c792eb8fceb.png

3.分页设计考虑因素

在构建REST API分页界面时,让我们快速介绍一些要点。

3.1 限制limit

限制允许API和客户端控制结果集中请求的结果数。通过传递 limit 参数,您可以指定每个页面要返回的项目数.API可以配置默认限制,但应允许客户端指定限制。

在上面的请求中,客户端将限制设置为50.小心,同时允许客户将limit 参数设置 , 设置为极高数量的限制会降低API性能。建议在API设计期间具有最大允许限制。

3.2排序

排序总是与搜索和分页并排。在设计REST API时,提供灵活性,让客户指定排序选项,同时从API返回结果。建议在设计API时使用 sort_by = [attribute name] - [asc / desc]模式.API设计器应将允许的属性名称指定为sort参数。例如,您可以使用?name-asc按产品名称排序或?name-desc反向排序。

4. Maven依赖

我们在Spring中处理REST分页时介绍了所有基本内容。我们在这篇文章中使用了以下技术堆栈,但它可以在任何其他技术上实现,前提是您在设计时遵循所有基本原则。

  • Spring Boot
  • JPA.
  • Spring Data REST

在本文中使用Spring Data REST的原因之一是Data REST API支持的开箱即用功能。

我们将在pom.xml中添加以下依赖项

  1. Spring Boot JPA
  2. Spring Boot Data REST
  3. HATEOS和Web

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-data-rest

org.springframework.boot

spring-boot-starter-hateoas

org.springframework.boot

spring-boot-starter-web

org.hsqldb

hsqldb

runtime

4.1 REST控制器:

@RestController

public class ProductRESTController {

@Autowired

private ProductService productService;

@Autowired private EntityLinks links;

@GetMapping(value = "/products

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值