Spring Data REST

Spring Data REST不完全指南(三)

六月ゝ 毕业季﹏ 提交于 2020-04-24 13:32:19
上一篇我们介绍了使用Spring Data REST时的一些高级特性,以及使用代码演示了如何使用这些高级的特性。本文将继续讲解前面我们列出来的七个高级特性中的后四个。至此,这些特性能满足我们大部分的接口开发场景。 需要满足的一些要求: 1.针对字段级别,方法级别,类级别进行限制(禁止某些字段,方法,接口的对外映射)。 2.对数据增删改查的限制(禁止某些请求方法的访问)。 3.能个性化定义请求的路径。 4.对所传参数进行值校验。 5.响应统一处理。 6.异常处理。 7.数据处理的切面。 ➡️ 本文,将演示7个要求中的其余四个要求。 对所传参数进行值校验 对于值校验,Spring 提供了Validator接口,Spring Data REST提供了使用Validator来进行值校验的功能。 首先 我们通过实现Validator接口来创建一个校验器, 然后 在实现RepositoryRestConfigurer或Spring Data REST的RepositoryRestConfigurerAdapter的子类的配置中,重写configureValidatingRepositoryEventListener方法,并在ValidatingRepositoryEventListener上调用addValidator,传递要触发此校验器的事件和校验器的实例。以下示例显示了如何执行此操作:

Spring Data REST不完全指南(二)

无人久伴 提交于 2020-04-23 07:15:28
上一篇文章介绍了Spring Data REST的功能及特征,以及演示了如何在项目中引入Spring Data REST并简单地启动演示了Spring Data REST项目。在本文中,我们将深入了解Spring Data REST的特性,以此来满足我们日常api开发工作的要求。 如果仅仅是上一篇文章中对Spring Data REST的使用,那无法做到在日常开发中使用Spring Data REST,所以在上一篇文章中,我们列出了日常api开发中的一些必要功能: 需要满足的一些要求: 1.针对字段级别,方法级别,类级别进行限制(禁止某些字段,方法,接口的对外映射)。 2.对数据增删改查的限制(禁止某些请求方法的访问)。 3.能个性化定义请求的路径。 4.对所传参数进行值校验。 5.响应统一处理。 6.异常处理。 7.数据处理的切面。 ➡️ 本文,将演示这些要求中的前三个要求。 针对接口级别,方法级别,字段级别进行访问限制 所谓的访问限制,这里我们的目的是指定某些资源不对外暴露,Spring Data REST使用注解来实现各级别的访问限制。 接口级别的访问限制: @RepositoryRestResource(exported = false) public interface TenantRepository extends CrudRepository<Tenant,

【本人秃顶程序员】Spring中的REST分页

孤街醉人 提交于 2020-03-01 23:53:30
←←←←←←←←←←←← 快!点关注 本文将介绍在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是有效选择;但如果我们说页面上的产品是资源

java – 混合Spring MVC Spring数据休息导致奇怪的MVC响应

前提是你 提交于 2019-12-03 02:59:30
我有两个JPA实体,一个具有SDR导出的存储库,另一个具有Spring MVC控制器和一个未导出的存储库. MVC暴露实体引用了SDR管理实体.参见下面的代码参考. 从UserController检索用户时,问题出现. SDR管理实体不会序列化,似乎Spring可能正在尝试在响应中使用HATEOAS参考. 以下是完全填充用户的GET如下所示: { "username": "foo@gmail.com", "enabled": true, "roles": [ { "role": "ROLE_USER", "content": [], "links": [] // why the content and links? } // no places? ] } 如何使用嵌入式SDR管理实体清楚地从Controller中返回User实体? Spring MVC管理 实体 @Entity @Table(name = "users") public class User implements Serializable { // UID @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @JsonIgnore private Long id; @Column(unique = true) @NotNull private String