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改变搜索参数,在实际应用中,此注解也可以应用在实体类的属性上

 

posted @ 2020-11-26 10:50  半雨微凉  阅读(277)  评论(0)    收藏  举报