1. 程式人生 > >六、springboot集成Swagger2

六、springboot集成Swagger2

ima terms title pid 信息 boot tail ise wire

1.Swagger簡介

  Swagger 是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統作為服務器以同樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,允許API來始終保持同步。

2.Spring Boot 集成Swagger

一、修改pom.xml,添加maven依賴

        <!-- Swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <
artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version
>2.6.1</version> </dependency>

二、添加Swagger配置類

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    
    @Bean
    public Docket createRestApi() {        
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(
"指定掃描的包路徑")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("大標題") .description("description") .termsOfServiceUrl("http://路徑.com") .contact(new Contact("name", "http://name.com", "[email protected]"))//作者 .version("1.0")//版本 .build(); } @SuppressWarnings("unused") private Predicate<String> petstorePaths() { return or( regex("/user.*"), regex("/cities.*") ); } }

  @Configuration讓Spring來加載該類配置

  @EnableSwagger2啟用Swagger2

  通過createRestApi函數創建Docket的Bean之後,apiInfo()用來創建該Api的基本信息(這些基本信息會展現在文檔頁面中)。select()函數返回一個ApiSelectorBuilder實例用來控制哪些接口暴露給Swagger來展現,本例采用指定掃描的包路徑來定義,Swagger會掃描該包下所有Controller定義的API,並產生文檔內容(除了被@ApiIgnore指定的請求)

3.添加文檔內容

  在API上做一些聲明:在Controller類中添加相關的swagger註解。但是有一個要求,這個Controller類一定要讓上一步配置類的@ComponentScan掃描到

  swagger通過註解表明該接口會生成文檔,包括接口名、請求方法、參數、返回信息的等等。

  swagger註釋API詳細說明

@Api:修飾整個類,描述Controller的作用
@ApiOperation:描述一個類的一個方法,或者說一個接口
@ApiParam:單個參數描述
@ApiModel:用對象來接收參數
@ApiProperty:用對象接收參數時,描述對象的一個字段
@ApiResponse:HTTP響應其中1個描述
@ApiResponses:HTTP響應整體描述
@ApiIgnore:使用該註解忽略這個API
@ApiError :發生錯誤返回的信息
@ApiParamImplicitL:一個請求參數
@ApiParamsImplicit 多個請求參數
@Api(tags={"積分接口"})
@RequestMapping("credit")
@RestController
public class CreidtController {

    @Autowired
    private CreditService creditService;
    
    @Autowired  
    private ConsulClient consulClient;
        
    private static Logger log = LoggerFactory.getLogger(CreidtController.class);

    /**
     * @param id
     * @return User
     */
    @ApiOperation(value = "根據用戶ID獲取可用積分", notes="包含各種類型積分")   
    @ApiImplicitParam(name = "id", value = "編號", required = true, paramType="path")
    @GetMapping("{id}")
    public Credit getuser(@PathVariable String id) {
        return null;
    }
    
    /**
     * @param serviceId
     */
    @ApiOperation(value="剔除服務實例", notes="剔除服務實例") 
    @ApiImplicitParam(name = "serviceId", value = "服務ID", required = true, paramType="path")
    @GetMapping("/clearService/{serviceId}")
    public void clearService(@PathVariable String serviceId) {
        log.info("下線服務-" + serviceId);
        consulClient.agentServiceDeregister(serviceId);
    }        
        
}

  完成上述代碼添加上,啟動Spring Boot程序,訪問:http://localhost:8080/swagger-ui.html

  就能看到前文所展示的RESTful API的頁面。我們可以再點開具體的API請求,以POST類型的/users請求為例,可找到上述代碼中我們配置的Notes信息以及參數user的描述信息。

4.API文檔訪問與調試

  在上圖請求的頁面中,我們看到user的Value是個輸入框?是的,Swagger除了查看接口功能外,還提供了調試測試功能,我們可以點擊上圖中右側的Model Schema(黃色區域:它指明了User的數據結構),此時Value中就有了user對象的模板,我們只需要稍適修改,點擊下方“Try it out!”按鈕,即可完成了一次請求調用!

技術分享圖片

此時,你也可以通過幾個GET請求來驗證之前的POST請求是否正確。

參考:https://blog.csdn.net/Amethyst128/article/details/72877660    swagger.io

六、springboot集成Swagger2