SpringBoot Restful 风格 API 开发 + SpringBoot 集成 Swagger
GitHub 源码: https://github.com/xivinChen/SpringBoot
一. Restful 风格 API
restful API 命名禁止出现动词, 即用请求方式区分动作. 如下:
get 查询接口
post 新增接口
put 更新接口
delete 删除接口
1.maven-archetype-quickstart 方式创建模块 springboot-restful-API
2. 把 springboot-ssm 模块的代码和配置复制过来, 不需要额外引入依赖.
3. 修改 UserController 代码, 改成 Restful 接口
- @RestController
- @RequestMapping("/user")
- public class UserController {
- @Resource
- private UserMapper userMapper;
- //@RequestMapping("/listByUser")
- @GetMapping("/")
- public List<User> listByUser() {
- return userMapper.list();
- }
- //@RequestMapping("/getOneUser")
- @GetMapping("/{id}")
- public User getOneUser(@PathVariable("id") int id) {
- return userMapper.selectByPrimaryKey(id);
- }
- //@RequestMapping("/addUser")
- @PostMapping("/")
- public int addUser(User user) {
- return userMapper.insert(user);
- }
- //@RequestMapping("/deleteUser")
- @DeleteMapping("/{id}")
- public int deleteUser(@PathVariable("id") int id) {
- return userMapper.deleteByPrimaryKey(id);
- }
- @PutMapping("/")
- public int updateUser(User user) {
- return userMapper.updateByPrimaryKey(user);
- }
- }
4. 运行测试, 浏览器 http://localhost:8090/user/1
5. 引入 restful 风格 API 后, post put delete 请求方式在浏览器就不好操作了, 此时我们可以选择下载一个测试工具 Postman 来辅助我们测试. 但 SpringBoot 可以集成一个很强大的测试工具, 可以很方便的测试接口. 它就是传说中的 Swagger
二. SpringBoot 集成 Swagger
1. 引入依赖
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>2.9.2</version>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>2.9.2</version>
- </dependency>
2. 创建配置类 SwaggerConfig.java
.apis(RequestHandlerSelectors.basePackage("xyz.java1024.controller")) 对应 controller 所处的包
- ### 3. 浏览器进入 API 页面 地址为: http://localhost:8090/swagger-ui.html
- ![swagger-ui](https://img-blog.csdnimg.cn/20191218181626864.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI1NDI1Mg==,size_16,color_FFFFFF,t_70)
- ### 4. 调用 get 请求接口
- ![swagger-ui](https://img-blog.csdnimg.cn/20191218181652737.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI1NDI1Mg==,size_16,color_FFFFFF,t_70)
- ### 5. 对于实体类型的请求参数体, 我们在 Controller 接口加上 @RequestBody 可读性会更加好!
> 修改前
![swagger-ui](https://img-blog.csdnimg.cn/20191218181712559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI1NDI1Mg==,size_16,color_FFFFFF,t_70)
> 修改后
- ![swagger-ui](https://img-blog.csdnimg.cn/20191218181731871.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI1NDI1Mg==,size_16,color_FFFFFF,t_70)
- //@RequestMapping("/addUser")
- @PostMapping("/")
- public int addUser(@RequestBody User user) {
- return userMapper.insert(user);
- }
> 重新启动刷新 swagger-ui 页面
- ![swagger-ui](https://img-blog.csdnimg.cn/201912181817490.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI1NDI1Mg==,size_16,color_FFFFFF,t_70)
- ### 5. 测试 post 请求
> 把创建时间和更新时间参数去掉 , 填写用户名等参数, 成功插入一条数据.
- ![swagger-ui](https://img-blog.csdnimg.cn/20191218181804811.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI1NDI1Mg==,size_16,color_FFFFFF,t_70)
- ### 6.swagger 增强
> 对于实体的某些属性我们时不需要传的, 并且我们不想它显示在 swagger 的请求体中, 如 新增用户的 createdAt 和 updatedAt 等属性, 我们可以通过在属性上面添加 @ApiModelProperty(hidden = true) 注解来隐藏属性
- public class User implements Serializable {
- private int id;
- private String username;
- private String tel;
- private String password;
- private int status;
- @ApiModelProperty(hidden = true)
- private Timestamp createdAt;
- @ApiModelProperty(hidden = true)
- private Timestamp updatedAt;
> 此时重启刷新 swagger 页面, 再次进入 UserController 的 post 可看到少了参数, 如图参数变得相当简洁!
- ![swagger-ui](https://img-blog.csdnimg.cn/20191218181914671.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI1NDI1Mg==,size_16,color_FFFFFF,t_70)
- ## 三. 总结
本文章, 主要写了 SpringBoot restful API 开发, 同时集成 swagger 测试接口!
来源: http://www.bubuko.com/infodetail-3373670.html