Spring Boot (四十三)——Jpa构建 RESTful 查询定制

最广泛的定制,就是查询,因为增删改操作的变化不像查询这么丰富。对于查询的定制,非常容易,只需要提供相关的方法即可。例如根据姓名查询学生:

public interface StudentDao extends JpaRepository<Student, Integer> {
    List<Student> findByNameContaining(@Param("name") String name);
}

注意,方法的定义,参数要有 @Param 注解。

定制完成后,重启项目,此时就多了一个查询接口,开发者可以通过 http://localhost:8080/books/search来查看和 book 相关的自定义接口都有哪些:
在这里插入图片描述
查询结果表示,只有一个自定义接口,接口名就是方法名,而且查询结果还给出了接口调用的示例。我们来尝试调用一下自己定义的查询接口:
在这里插入图片描述

我们可以根据实际情况,在 StudentDao 中定义任意多个查询方法,查询方法的定义规则和 Jpa 中一模一样,但是,这样有一个缺陷,就是 Jpa 中方法名太长,因此,如果不想使用方法名作为接口名,则可以自定义接口名:

public interface StudentDao extends JpaRepository<Student, Integer> {
    @RestResource(rel = "byName",path = "name")
    List<Student> findByNameContaining(@Param("name") String name);
}

@RestResource 注解中,两个参数的含义:

  • rel 表示接口查询中,这个方法的 key
  • path 表示请求路径

这样定义完成后,表示接口名为 byauthor ,重启项目,继续查询接口:
在这里插入图片描述

除了 rel 和 path 两个属性之外,@RestResource 中还有一个属性,exported 表示是否暴露接口,默认为 true ,表示暴露接口,即方法可以在前端调用,如果仅仅只是想定义一个方法,不需要在前端调用这个方法,可以设置 exported 属性为 false 。

如果不想暴露官方定义好的方法,例如根据 id 删除数据,只需要在自定义接口中重写该方法,然后在该方法上加 @RestResource 注解并且配置相关属性即可。

@RestResource(exported = false)
    void deleteById(Integer integer);

另外,另外生成的 JSON 字符串中的集合名和单个 item 的名字都是可以自定义的,需要加在接口前面:

@RepositoryRestResource(collectionResourceRel = "sts",itemResourceRel = "st",path = "sts")
public interface StudentDao extends JpaRepository<Student, Integer> {
    @RestResource(rel = "byName",path = "name")
    List<Student> findByNameContaining(@Param("name") String name);
}

path 属性表示请求路径,请求路径默认是类名首字母小写+s,可以在这里自己重新定义。
在这里插入图片描述

跨域问题

之前讲过关于跨域的问题,有三种方式,@CrossOrigin注解可以加在方法上,接口前面,也可以提供一个配置类解决CORS跨域问题,在这里如果要实现跨域问题,直接将注解加在接口前面:

@CrossOrigin
@RepositoryRestResource(collectionResourceRel = "sts",itemResourceRel = "st",path = "sts")
public interface StudentDao extends JpaRepository<Student, Integer> {
    @RestResource(rel = "byName",path = "name")
    List<Student> findByNameContaining(@Param("name") String name);
}
其他配置

当然,也可以在 application.properties 中配置 REST 基本参数:

spring.data.rest.base-path=/rest
spring.data.rest.sort-param-name=sort
spring.data.rest.page-param-name=page
spring.data.rest.limit-param-name=size
spring.data.rest.max-page-size=20
spring.data.rest.default-page-size=0
spring.data.rest.return-body-on-update=true
spring.data.rest.return-body-on-create=true

配置含义,从上往下,依次是:

给所有的接口添加统一的前缀
配置排序参数的 key ,默认是 sort
配置分页查询时页码的 key,默认是 page
配置分页查询时每页查询页数的 key,默认是size
配置每页最大查询记录数,默认是 20 条
分页查询时默认的页码
更新成功时是否返回更新记录
添加成功时是否返回添加记录

例如,添加了spring.data.rest.base-path=/rest之后:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot是一个经典的Java框架,可以利用它轻松地构建Restful API。Restful API是一种现代的API开发方式,允许开发人员使用HTTP协议中的GET、POST、PUT、DELETE等方法来处理数据,同时使用JSON等格式进行数据传输。在这篇文章中,我们将使用Spring Boot构建一个简单的Restful API实例。 首先,我们需要创建一个Spring Boot项目。我们可以使用Spring Initializr来创建一个基本的Spring Boot工程。在Spring Initializr中选择Gradle工程、Java语言、Spring Boot版本以及所需的包(包括Spring Web、Spring Data JPASpring Boot Devtools等),然后点击Generate按钮生成项目。 接下来,我们需要创建一个实体类。在本例中,我们将创建一个名为User的实体类,该类具有id、name和age三个属性。我们需要使用注解来将实体类映射到数据库中。 然后我们需要创建一个控制器类。在本例中,我们将创建一个名为UserController的控制器类,该类具有四种HTTP方法(GET、POST、PUT、DELETE),用于处理数据的获取、新增、修改和删除。 最后,我们需要配置数据源,以便我们能够将数据持久化到数据库中。在本例中,我们将使用MySQL作为我们的数据源。我们需要在application.properties文件中配置数据库连接信息。 完成上述步骤后,我们可以启动项目并测试我们的Restful API了。我们可以使用POSTMAN等工具来测试不同的HTTP方法,并检查API的返回结果是否符合预期。 总体来说,Spring Boot构建Restful API的好选择,它提供了开箱即用的功能,可以让我们轻松地构建一个可靠的API。通过上述简单的步骤,我们可以构建一个简单的Restful API实例,这对于需要进行API开发的项目来说,是一个很好的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值