《SpringBoot+Vue》Chapter07 Spring

作者: So_ProbuING | 来源:发表于2023-12-17 08:50 被阅读0次

    REST简介

    REST是一种Web软件架构风格,它是一种风格,而不是标准,匹配或兼容这种架构风格的网络服务称为REST服务。REST服务简洁并且有层次,REST通常基于HTTP、URI、和XML以及HTML这些现有的广泛流行的协议和标准。在REST中资源是由URI来指定的,对资源的增删改查可以通过HTTP协议提供的GET、POST、PUT、DELETE等方法实现。使用REST可以更高效地利用缓存来提高响应速度,同时REST中的通信会话状态由客户端来维护,这可以让不同的服务器处理一系列请求中的不同请求,进而提高服务器的扩展性。
    在SpringMVC框架中,开发者可以通过@RestController注解开发一个RESTful服务。

    JPA

    • 创建项目、添加依赖
      <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.11</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.28</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
             <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-rest</artifactId>
            </dependency>
        </dependencies>
    
    • application.properties配置
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.username=root
    spring.datasource.password=xml123xml
    spring.datasource.url=jdbc:mysql:///jparestful
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.database=mysql
    
    • 实体类
    @Entity(name = "t_book")
    public class Book {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        private String name;
        private String author;
    //省略setter、getter
    }
    
    • BookRepository
    @NoRepositoryBean
    public interface BookRepository<T, ID> extends JpaRepository<T, ID> {
    
    }
    

    这样来看基于RESTful的增删改查、分页查询方法JpaRepository都提供了

    • 测试
      使用postman测试
    • 增 Post


    • 删 DELETE


    • 改 PUT


    • 查 GET


    自定义请求路径

    默认情况下,请求路径都是实体类名小写加s,如果想要对请求路径进行重新定义,可通过@RepositoryRestResource注解实现
    修改BookRepository

    @RepositoryRestResource(path = "bs",collectionResourceRel = "bs",itemResourceRel = "b")
    public interface BookRepository extends JpaRepository<Book, Integer> {
    
    }
    
    • path:表示将所有请求路径中的books都改为bs
    • collectionResourceRel表示将返回的JSON集合中book集合的key修改为bs
    • itemResourceRel表示将返回的JSON集合中的单个book的key修改为b


      自定义路径

    自定义查询方法

    如果需要自定义的方法,只需要在BookRepository中定义相关方法并暴露出去

    @RepositoryRestResource(path = "bs",collectionResourceRel = "bs",itemResourceRel = "b")
    public interface BookRepository extends JpaRepository<Book, Integer> {
        @RestResource(path = "author",rel = "author")
        List<Book> findByAuthorContains(@Param("author")String author);
    }
    

    隐藏方法

    默认情况下,继承Repository接口(Repository的子类)都会被暴露出来,即开发者可执行基本的增删改查方法。如果继承了Repository但是又不想暴露相关操作

    @RepositoryRestResource(path = "bs",collectionResourceRel = "bs",itemResourceRel = "b")
    public interface BookRepository extends JpaRepository<Book, Integer> {
        @RestResource(path = "bcd",exported = false)
        List<Book> findByAuthorContains(@Param("abc")String author);
    }
    
    • @RepositoryRestResource注解中的exported属性置为false之后,上面的所有接口都会失效。如果单纯地不想暴露某个方法,则在方法上进行配置即可。@RestResource注解的exported属性默认为true,设置为false即可

    配置CORS

    以前实现跨域访问需要使用@CrossOrigin注解,另一种是全局配置。默认RESTful工程不需要开发者自己提供Controller,因此添加在Controller的方法上的@CrossOrigin注解可以直接写在BookRepository上。
    此时,BookRepository中的所有方法都支持跨域。如果只需某一个方法支持跨域,那么将@CrossOrigin注解添加到某一个方法上即可。

    相关文章

      网友评论

        本文标题:《SpringBoot+Vue》Chapter07 Spring

        本文链接:https://www.haomeiwen.com/subject/sdfwgdtx.html