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測試接口!