构建REST服务

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 16:16   11   0
  1. RESTfu简介
  2. 搭建Jpa环境
  3. SpringBoot中REST默认提供的增删改查
  4. SpringBoot中REST自定义查询方法
  5. REST配置CORS
  6. 自定义REST配置
  7. MongoDB实现REST


  • RESRful简介
  1. 是一种风格而不是一种约束
  • 搭建Jpa快速构建RESTful服务

创建SpringBoot项目,添加依赖 web依赖 SQL下的Spring Data JPA依赖,MySQL Driver依赖 web下的Rest Respositories依赖 在pom文件下制定mysql的version,添加druid依赖

<dependency>
    <groupId>con.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</denpendency>
dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>5.1.27</version>
</denpendency>

在application.properties下配置JPA和数据库信息

spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=UTF-8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.show-sql=true
spring.jpa.database=mysql
spring.jpa.database-platform=mysql
spring.jpa.hibernate.ddl-auto=update

创建一个实体类Book

@Entity(name="t_book")
public class Book{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String author;
   // get\set()
    //.....
}

创建一个BookDao

public interface BookDao extends JpaRepository<Book,Integer>{
    
}

创建一个Test类

@AutoWride
BookDao bookDao;
@Test
public void test1(){
    Book book = new Book();
    book.setName("三国演义");
    book.setAuthor("罗贯中");
    book.setId(1);
   List<Book> list =  bookDao.update(book);
   System.out.println(book);
}

  • SpringBoot中REST默认提供的增删改查
    查询使用Postman  ====GET
    http://localhost:8080/books  //查询就是地址加上要查询的类名小写加上's'
    http://localhost:8080/books?page=1$size=2&sort=id,desc  //倒序分页查询
    http://localhost:8080/books/1  //查询id 为1的记录
    添加======POST
    http://localhost:8080/books
    {"name":"水浒传“,"author":"施耐庵"}  //在body中添加
    修改====PUT
    http://localhost:8080/books/5   //修改id为5的记录
    {"name":"水浒传“,"author":"鲁迅"}  //在body中添加,修改作者名为鲁迅
    删除====DELETE
    http://localhost:8080/books/6  //删除id为6的记录

  • SpringBoot中REST自定义查询方法
    //@RepositoryRestResource可选
    @RepositoryRestResource(path="bs",collectionResourceRel="bs",itemResourceRel="b")
    public interface BookDao extends JpaRepository<Book,Integer>{
        @RestResource(path="byname",rel="findbyname") //(可选)可以修改自定义方法为其它名称
        List<Book> findBookByNameContaining(@Param("name") String name);
    }
    在postman中 ====Get
    http://localhost:8080/books/search  ///可以查看相关的接口
     就会出现:
         http://localhost:8080/books/search/findBookByNameContaining(?name)
    就可以用这个自定义的方法,查询啦
        http://localhost:8080/books/search/findBookByNameContaining?name=西
    如果上面使用了RestResource注解,则
        http://localhost:8080/book/serach/byname?name=西  
    如果上面定义了@RepositoryRestResource注解,则
        http://localhost:8080/bs/search/byname?name=西  
                               

  • REST配置CORS请求跨域
    @CrossOrigin  //跨域注解
    public interface BookDao extends JpaRepository<Book,Integer>{
    }
     

  • 自定义REST配置
    //第一种====推荐
    //在application.properties中
    spring.data.rest.base-path=/api  //定义访问的时候要在端口后加入/api为前缀访问
    spring.data.rest.default-page-size=20  //查询后默认返回20条记录
    spring.data.rest.max-page-size=100  //最大的返回记录数
    
    //第二种===没多大必要
    //用java代码实现,创建一个RestConfig类实现RepositoryRestConfigure,重写里面的方法
    @Configuration
    public class RestConfig implements RepositoryRestConfigure {
        @Override
        public void configureRepositoryRestConfiguration(RepositortRestConfiguration config){
            config.setDefaultPageSize(20)
            .setMaxPageSize(100);
          // .....  //提供的方法和第一种里面是一样的
        }
    }
    

  • MongoDB构建REST服务
  • 创建SpringBoot项目,添加依赖 web依赖 NoSQL下的Spring Data MongoDB依赖 web下的Rest Respositories依赖 在application.properties中配置MongoDB
    spring.data.momgodb.database=zenghao
    spring.data.mongodb.port=27017
    spring.data.mongodb.password=123
    spring.data.mongodb.username=root
    spring.data.mongodb.authentication-database=admin
    spring.data.mongodb.host=127.0.0.1
    

    创建一个实体类Book

    public class Book{
        private Integer id;
        private String name;
        private String author;
        //get\set()
       // .....
    }

    创建一个BookDao接口

    public interface BookDao extends MongoRepository<Book,Integer> {
        
    }
    

    后面的CURD操作和前面JPA一样(略)

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP