SpringBoot快速上手《三》:SpringBoot Restful 風格Api+swagger

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測試接口!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章