![v2-7fba7e0380481109fa430dd3b81358ac_1440w.jpg?source=172ae18b](http://img-03.proxy.5ce.com/view/image?&type=2&guid=9aff0490-3a2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-7fba7e0380481109fa430dd3b81358ac_1440w.jpg?source=172ae18b)
1、REST 简介 2、JPA 实现 REST
1、REST 简介
REST 是一种 Web 软件架构风格,它是一种风格,而不是标准,匹配或兼容这种架构风格的网络服务称为REST 服务。REST服务简洁并且有层次,REST通 常基于 HTTP、URL和 XML 以及 HTML 这些现有的广泛流行的协议和标准。在 REST 中,资源是 由 URL来指定的,对资源的增删改查操作可以通过 HTTP 协议提供的 GET、 POST、 PUT、 DELETE 等方法实现。 在前后端分离项目中, 一个设计良好的 Web 软件架构必然要满足 REST 风格。
2、JPA 实现 REST
在 Spring Boot 中,使用 Spring Data JPA 和 Spring Data Rest 可以快速开发出一个 RESTful 应 用 。
创建项目?
创建 Spring Boot 项目,添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
项目创建完成后, 在 application.properties 中配置基本的数据库连接信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.url=jdbc:mysql:///jparestful
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database=mysql
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.show-sql=true
创建实体类 ?
package com.zrq.Bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity(name = "t_book")
public class BookRestful{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String author;
//省略getter/setter
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + ''' +
", author='" + author + ''' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
创建 BookRepository?
package com.zrq.repository;
import com.zrq.Bean.BookRestful;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
//import org.springframework.data.rest.core.annotation.RepositoryRestResource;
//import org.springframework.data.rest.core.annotation.RestResource;
import org.springframework.web.bind.annotation.CrossOrigin;
import java.util.List;
import com.zrq.Bean.BookRestful;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* 创建PersonRepository继承JpaRepository,JpaRepository默认提供了一些基本
* 的操作方法.(基本的增删改查分页查询方法)
*
* 方法体什么都不用写,用Postman测试即可.
*/
public interface BookRepository extends JpaRepository<BookRestful,Integer> {
}
JpaRepository 中默认提供了一些基本的操作方法,
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.springframework.data.jpa.repository;
import java.util.List;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;
@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
List<T> findAll();
List<T> findAll(Sort var1);
List<T> findAllById(Iterable<ID> var1);
<S extends T> List<S> saveAll(Iterable<S> var1);
void flush();
<S extends T> S saveAndFlush(S var1);
void deleteInBatch(Iterable<T> var1);
void deleteAllInBatch();
T getOne(ID var1);
<S extends T> List<S> findAll(Example<S> var1);
<S extends T> List<S> findAll(Example<S> var1, Sort var2);
}
可以看到,基本的增删改查、分页查询方法 JpaRepository 都提供了
测试?
经过如上几步,一个RESTful服务就构建成功了,可能有读者会问“什么都没写呀 ! ”,是 的,这就是 Spring Boot 的魅力所在。 RESTful 的测试首先需要有一个测试工具,可以直接使用浏览器中的插件,例如 Firefox 中的 RESTClient,或者直接使用 Postman 等工具,笔者这里是使用 Postman 测试的。
![v2-abf10befa28082a20e42df2d3c4f8d8d_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=9aff0490-3a2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-abf10befa28082a20e42df2d3c4f8d8d_b.jpg)