1. 程式人生 > >springboot與swagger2的整合

springboot與swagger2的整合

 https://www.cnblogs.com/fengli9998/p/7522973.html

1、swagger是什麼,這個我覺得凡是一個開發人員就應該知道度娘啊,絕對強大。

簡單說下,它的出現就是為了方便進行測試後臺的restful形式的介面,實現動態的更新,當我們在後臺的介面修改了後,swagger可以實現自動的更新,而不需要認為的維護這個介面進行測試。

2、springboot與swagger的整合:

第一步:jar包的引入:

關於jar包的引入出現了一個問題就是版本的問題,可能需要與你的編輯器或者jdk要匹配吧,試了幾個才最終成功匯入jar。

第二步:swagger的配置啟動類編寫:

要使用swagger要進行一些配置,這個在介面的圖上是可以顯示的:類似於說明書:在這個類中我們會使用註解來進行啟動swagger:

具體配置如下:

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

package com.springboot.example;

 

 

 

 

//swagger2的配置檔案,在專案的啟動類的同級檔案建立

 

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;

import springfox.documentation.builders.PathSelectors;

import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.service.Contact;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

 

@Configuration

@EnableSwagger2

public class Swagger2 {

//swagger2的配置檔案,這裡可以配置swagger2的一些基本的內容,比如掃描的包等等

    @Bean

    public Docket createRestApi() {

        return new Docket(DocumentationType.SWAGGER_2)

                .apiInfo(apiInfo())

                .select()

                //為當前包路徑

                .apis(RequestHandlerSelectors.basePackage("com.springboot.example.Controller"))

                .paths(PathSelectors.any())

                .build();

    }

    //構建 api文件的詳細資訊函式,注意這裡的註解引用的是哪個

    private ApiInfo apiInfo() {

        return new ApiInfoBuilder()

                //頁面標題

                .title("Spring Boot 測試使用 Swagger2 構建RESTful API")

                //建立人

                .contact(new Contact("MarryFeng""http://www.baidu.com"""))

                //版本號

                .version("1.0")

                //描述

                .description("API 描述")

                .build();

    }

 

 

}

  這裡的坑是:所使用類的引入檔案要注意到底是哪個,之前因為這個出錯了,

1

2

@Configuration

@EnableSwagger2<br>這兩個註解,一個是swagger2的配置,一個是專案啟動的時候啟動swagger2.<br>具體什麼意思看下程式碼就知道了。

1

2

//為當前包路徑

<span style="color: #ff0000">.apis(RequestHandlerSelectors.basePackage("com.springboot.example.Controller"))</span><br><span style="color: #ff0000">這個包指的是我們在哪些類中使用swagger2來測試。</span>

第三步:使用swagger來進行模擬測試:

使用swagger2來進行測試介面主要是在哪些類中使用:這裡我們依然選擇在controller層:

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

package com.springboot.example.Controller;

 

import com.springboot.example.Service.StudentService;

import com.springboot.example.entity.Student;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiImplicitParam;

import io.swagger.annotations.ApiOperation;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

 

/**

 * Created by Administrator on 2017/9/13.

 */

@RestController

@RequestMapping("api")

@Api("swaggerDemoController相關的api")

public class SwaggerDemoController {

    @Autowired

    private StudentService studentService;

 

    private static final Logger logger= LoggerFactory.getLogger(SwaggerDemoController.class);

 

 

    @ApiOperation(value = "根據id查詢學生資訊", notes = "查詢資料庫中某個的學生資訊")

    @ApiImplicitParam(name = "id", value = "學生ID", paramType = "path", required = true, dataType = "Integer")

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)

    public Student getStudent(@PathVariable int id) {

        logger.info("開始查詢某個學生資訊");

        return studentService.selectStudentById(id);

    }

 

 

}

 

上面這些可以看下具體的註解是什麼意思:

這樣swagger2與springboot就整合完畢了。

看下最終效果吧:

訪問路徑:

http://localhost:8080/swagger-ui.html

輸入id後,我們可以看到查詢結果:、

是不是很方便,我們不用像postman一樣來編寫入口,swagger2自動完成:

而且實時更新:

是不是很方便!

至此swagger2與springboot的整合完畢。