Spring Data Rest
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest-hal-browser</artifactId> <version>3.3.5.RELEASE</version> </dependency>
配置
spring.data.rest.base-path=/api
实体类
@Data @Entity(name = "t_user") public class SystemUser extends AbstractAuditable implements Serializable { private String uname; private String email; private String address; @Version // 标记为控制乐观锁字段 private Long version; }
Repository
@RepositoryRestResource( exported = true, // 是否导出 path = "users", // 资源路径 collectionResourceRel = "user", // 资源名称 collectionResourceDescription = @Description("用户信息"), itemResourceRel = "userDetail", itemResourceDescription = @Description("用户详情")) public interface UserRepository extends JpaRepository<SystemUser, Long>, JpaSpecificationExecutor<SystemUser>, MyRepository<SystemUser, Long> { @RestResource( exported = false, // 是否暴露给Search使用 path = "uname", // 资源名称 rel = "用户名") // 资源描述 <T> Collection<T> findByUname(String uname, Class<T> type); // and 关系查询 List<SystemUser> findByUnameAndEmail(String uname, String email); // 包含 distinct 去重、or的SQL语法 List<SystemUser> findDistinctByUnameOrEmail(String uname, String email); // 查询uname字段并忽略大消息 List<SystemUser> findByUnameIgnoreCase(String uname); // 查询uname字段和email字段并全部忽略大小写 List<SystemUser> findByUnameAndEmailAllIgnoreCase(String uname, String email); // 查询uname字段,并根据email倒序排序 List<SystemUser> findByUnameOrderByEmailDesc(String uname); }
启动项目即可
访问 http://localhost:8080/api/browser/index.html

默认状态码
200 : GET请求
201 : POST和PUT请求
204 : 对于PUT、PATCH和DELETE,如果配置没设置为不返回资源更新的响应体
如果配置值设置为包含PUT的响应,则将返回200进行更新,PUT将为PUT创建的资源返回201
如果配置值显示设置为null, 则会使用HTTP Accept标头的存在来确定响应代码
支持的HTTP方法
GET,返回单个实体
PUT,更新资源
PATCH,部分更新
DELETE,删除暴露的资源
POST,从给定的请求正文创建一个新的实体
定制
使用@RepositoryRestResource改变资源的名称
使用@RestResource改变搜索参数,在实际应用中,此注解也可以应用在实体类的属性上

浙公网安备 33010602011771号