基于Restful风格的springboot开发文档
1:SpringBoot框架构建
2:SpringBoot–Json处理
3:SpringBoot–传递参数
4:SpringBoot–参数校验
5:SpringBoot构建RestFulApi
6:SpringBoot使用Swagger2构建的API文档
1.SpringBoot框架构建:
(1)新建springBoot框架 file—>New—>Project–>Spring Initializr
(2)SpringBoot骨架搭建
(3)选择项目保存路径
(4)进入项目 删除HELP.md/mvnw/mvnw.cmd
(5)配置本地仓库路径(需要安装maven)
(6)修改pom.xml文件 更改编码格式:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
需要注意:一个继承spring-boot-starter-parent,两个依赖,spring-boot-starter-web 是web项目依赖必须,spring-boot-starter-test 是spring boot项目单元测试依赖
(7)自动代码补全/自定义快捷键 方便Springboot搭建
(8)配置华为云镜像加速
(9)查看maven的保存路径
(10)项目启动 直接进入SpringBoot项目启动类 :DemoApplication 显示tomcat start 即表明SpringBoot启动成功
(11)进入本地8080端口 发现error page 这是正常的 因为什么东西都还没写
(12)在DemoApplication同级目录新建一个HelloController(用get请求方式 只是一个示例)重启启动类
(13)重新打开8080端口 如图 SpringBoot基本框架已经算搭建好了
2.SpringBoot–Json处理:
SpringBoot对于JSON的支持
(1)引入Lombok 这里讲一下lombok作用:有了Lombok 实体类不需要写set/get方法 不要写无参/有参构造方法 在pom.xml中添加Lombok依赖
org.projectlombok lombok 1.16.20(2)然后进入Setting–>Plugins 下载Lombok插件
Lombok:
@Data //get 、set方法
@AllArgsConstructor //所有参数的有参数构造函数
@NoArgsConstructor //无参数构造函数
(3)示例:
这里写一个实体类
根据实体写一个对应的控制器CarController:
如图 请注意:@RestController 注解,等于@Controller 与 @ResponseBody 一起使用
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等,一般情况下来说常用其来处理application/json类型
(1)测试获取单个对象json
开启postman,设置发出get请求,请求地址:
http://localhost:8080/car/findone 如图显示:
(2)测试获取集合多个对象json
开启postman,设置发出get请求,请求地址:
http://localhost:8080/car/getall 如图显示:
3.SpringBoot–传递参数:
第一类:请求路径传参
@RequestParam 获取查询参数。即url?name=value 这种形式
@PathVariable 获取路径参数。即url/{id} 这种形式
(3)传递参数获取单个json:
地址栏输入:http://localhost:8080/car/getcar2/五菱?id=1
第二类:@RequestBody参数
用postman测试: 请求参数,选择body,选择 raw方式,发送JSON(application/json)请求
(4)测试传递json参数获取单个对象json
第三类:Body参数,无注解
(5)修改Controller CarController新增接收封装对象参数,返回单个及多个对象方法
测试传递普通body参数获取单个对象json
开启postman,设置发出post请求,请求地址:
http://localhost:8080/car/getcar4
请求参数,选择body 如图:
4.SpringBoot 参数校验
(1)PathVariable路径请求参数校验
@RequestMapping("/valid/{group:[a-zA-Z0-9_]+}/{userid}")
public String valid1(@PathVariable(“group”) String group,
@PathVariable(“userid”) String userid){
return group+":"+userid;
}
尝试postman发送http://localhost:8080/car/valid/a8799/guoke
(2)RequestParam方法请求参数校验(示例)
注意:需要在Controller指定@Validated注解
…参数校验有很多 就不一一演示了
5.SpringBoot构建RESTful API
RESTful是一种软件架构风格!
RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和delete,即数据的增删查改)操作,分别对应于HTTP方法:
GET用来获取资源,
POST用来新建资源(也可以用于更新资源),
PUT用来更新资源,
DELETE用来删除资源,
这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作
(1)RESTful接口设计
示例:以用户数据的基本操作来进行restful接口设计
HTTP协议请求方法 SpringBoot注解 URL 功能说明
POST @PostMapping /users 创建一个用户
GET @GetMapping /users 查询用户列表
GET @GetMapping /users/id 根据id查询一个用户
PUT @PutMapping /users/id 根据id更新一个用户
DELETE @DeleteMapping /users/id 根据id删除一个用户
(2)用户实体bean创建
(3)创建Controller UserController
package com.example.demo;
import com.example.demo.bean.User;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
/**
* 返回同步列表
/
private List listUser= Collections.synchronizedList(new ArrayList());
/**
* 获取全部用户信息
* @return
*/
@GetMapping("/")
public List getUserList(){
return listUser;
}
/***
* 新增用户
* @param user
* @return
*/
@PostMapping("/")
public String createUser(User user) {
listUser.add(user);
return "success";
}
/***
* 获取指定id用户信息
* @param id
* @return
*/
@GetMapping("/{id}")
public User getUser(@PathVariable("id")Long id) {
for (User user : listUser) {
if(user.getId()==id) {
return user;
}
}
return null;
}
/**
* 更新指定id用户信息
* @param id
* @param user
* @return
*/
@PutMapping("/{id}")
public String updateUser(@PathVariable("id") Long id,User user) {
for (User user2 : listUser) {
if(user2.getId()==id) {
user2.setName(user.getName());
user2.setAge(user.getAge());
}
}
return "success";
}
/***
* 删除指定id用户
* @param id
* @return
*/
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable("id") Long id) {
listUser.remove(getUser(id));
return "success";
}
}
(4)Postman测试RESTful接口
新增用户(insert–>post)
Post:http://localhost:8080/users/
获取用户全部信息(select–>get)
Get http://localhost:8080/users/
获取指定id用户信息(select where–>get)
Get: http://localhost:8080/users/2
更新指定id用户信息
put http://localhost:8080/users/id
删除指定id用户信息
delete http://localhost:8080/users/id
restful风格较于传统风格:
6.SpringBoot使用Swagger2构建的API文档
(1)添加依赖 下载时间较长 即使配置镜像依旧较慢 需要耐心等待
io.springfox
springfox-swagger2
2.8.0
io.springfox
springfox-swagger-ui
2.8.0
(2)项目下新建config配置包 包下新建SwaggerConfig配置类
需要说明的是:
@ApiOperation注解来给API增加说明
@Configuration可理解为用spring的时候xml里面的标签
@Bean可理解为用spring的时候xml里面的标签
@ApiImplicitParams
@ApiImplicitParam注解来给参数增加说明
如图:
查看SwaggerAPI文档:
接口文档访问:http://localhost:8080/swagger-ui.html#
已经写好的示例接口:
点开每个接口,可以查看接口详情:
注意:不同版本的Swagger 风格也略有差异 但restful是不变的