avatar

SpringBoot构建REST服务

摘要:本文介绍了RESTful以及如何在SpringBoot中构建REST服务

RESTful简介


在移动互联网中,RESTful 得到了非常广泛的使用。RESTful 这个概念提出来很早,但是以前没有移动互联网时,我们做的大部分应用都是前后端不分的,在这种架构的应用中,数据基本上都是在后端渲染好返回给前端展示的,此时 RESTful 在 Web 应用中基本就没用武之地,移动互联网的兴起,让我们一套后台对应多个前端项目,因此前后端分离,RESTful 顺利走上前台。

RESTful的功能,通俗来讲就是:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

  • GET:获取资源
  • POST:新建或更新资源
  • PUT:更新资源
  • DELETE:删除资源

那么我们就通过一个实例来看看SpringBoot中如何使用RESTful。

SpringBoot中构建REST服务


搭建Jpa环境

添加依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

在application.properties中配置

1
2
3
4
5
6
7
8
9
10
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=root
spring.datasource.password=11215858
spring.datasource.url=jdbc:mysql://localhost:3306/javaboy?serverTimezone=UTC

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

创建Book实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.example.jparestful.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
* @author: WJZheng
* @date: 2020/3/25 18:21
* @description:
*/
@Entity(name = "t_book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String author;

@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;
}
}

创建BookDao接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.example.jparestful.dao;

import com.example.jparestful.bean.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;

import java.util.List;

/**
* @author: WJZheng
* @date: 2020/3/25 18:23
* @description:
*/
public interface BookDao extends JpaRepository<Book, Integer> {
List<Book> findBookByNameContaining(@Param("name") String name);
List<Book> findBookByIdGreaterThan(@Param("id") Integer id);
}

至此我们的基础配置就做好了,那么我们通过postman来测试以下RESTful的默认接口

RESTful默认的增删改查

用GET方法查询数据

我们在postman中使用GET方法访问该网址http://localhost:8080/books

从图中的URL中我们还可以看到,在后面添加数据的id,即可查到特定的数据。并且page中还显示了分页信息

  • size表示每一页的条数
  • totalElements表示总数据量
  • totalPages表示总页数
  • number表示当前页数

用POST方法增加数据

Author: WJZheng
Link: https://wellenzheng.github.io/2020/03/27/SpringBoot%E6%9E%84%E5%BB%BAREST%E6%9C%8D%E5%8A%A1/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.

Comment