SpringBoot整合Swagger

@Author:SimpleWuhtml

什麼是Swagger?

Swagger是什麼:THE WORLD’S MOST POPULAR API TOOLING 根據官網的介紹: Swagger Inspector:測試API和生成OpenAPI的開發工具。Swagger Inspector的創建是爲了解決開發者的三個主要目標。前端

  • 執行簡單的API測試
  • 生成OpenAPI文檔
  • 探索新的API功能

個人理解Swagger是一個規範和完整的框架,用於生成、描述、調用和可視化RESTful風格的Web服務。簡單來講,Swagger是一個功能強大的接口管理工具,而且提供了多種編程語言的先後端分離解決方案。根據個人使用,固然我只是最簡單的使用,我感受Swagger有如下幾個優勢:web

Swagger能夠整合到代碼中,在開發時經過註解,編寫註釋,自動生成API文檔。 將前端後臺分開,不會有過度的依賴。spring

界面清晰,不管是editor的實時展現仍是ui的展現都十分人性化,若是本身僅僅用markdown來編寫,又要糾結該如何展示,十分痛苦。編程

構建項目

step1.導入依賴
<!--swagger服務api構建個性包-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.6.1</version>
    </dependency>
	<!--swagger ui界面-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.6.1</version>
    </dependency>
	<!--springboot web服務-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
	<!--springboot單元測試-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
step2.編寫swagger配置類

想要使用swagger功能必須提供配置類,主要配置ui界面信息,以及配置掃描位置,swagger會根據配置的路徑掃描全部的服務生成api。後端

其中核心RequestHandlerSelectors.basePackage("com.simple.spring.boot.controller"),在這裏配置咱們的須要的掃描包位置。api

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.simple.spring.boot.controller"))
            .paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("Spring Boot中使用Swagger2構建RESTful APIs")
        .description("myapp")
        .termsOfServiceUrl("http://blog.csdn.net/SimpleWu")
        .version("1.0").build();
    }
}
step3.編寫springboot啓動類

@ComponentScan(basePackages={"com.simple.spring.boot.controller"}) 也是須要配置掃描路徑。springboot

@SpringBootApplication
@ComponentScan(basePackages={"com.simple.spring.boot.controller"})  
public class SwaggerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SwaggerApplication.class, args);
    }
}
step4.建立前端控制器
@RestController
@Api(tags = "swgger測試服務", description = "swgger測試服務")
@RequestMapping(value = "/simple/wu")
public class TestController {

    @ApiOperation(value="測試POST方法", notes="測試POST方法")
    @ApiImplicitParam(name = "令牌", value = "ID", required = true, dataType = "token")
    @RequestMapping(value="hello", method=RequestMethod.POST)
    public String post(@RequestBody String token) {
        books.put(book.getId(), book);
        return "success";
    }
}
  1. @Api(tags = "swgger測試服務", description = "swgger測試服務") 指定某個類提供服務的名字
  2. @ApiOperation(value="測試POST方法", notes="測試POST方法") 指定某個請求的名字
  3. @ApiImplicitParam(name = "令牌", value = "token", required = true, dataType = "String")指定名字對應參數爲令牌,以及對應參數字段token,required = true表明這個參數爲必填參數,dataType 表明數據類型。
step5.啓動服務

從上面的代碼中咱們指定請求爲POST在UI界面上咱們會看到一個服務名字爲swgger測試服務的大類點擊進去後能夠看到裏面所擁有的請求,若是指定這個請求的類型那麼沒法進行單元測試,指定後咱們會看到一個請求名字叫作測試POST方法的請求而且須要填入必填參數token來完成咱們的單元測試。markdown

咱們能夠直接經過SwaggerApplication類來運行main方法來進行服務,端口號默認爲8080.app

swagger地址:http://localhost:8080/swagger-ui.html 只須要在地址後面加上swagger-ui.html便可訪問

咱們訪問這個位置便可看到UI界面,界面簡潔而且容易上手,我這邊就不截圖了。

step.總結

swagger官方文檔:https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

swagger的一個最大的優勢是能實時同步api與文檔。

在項目開發過程當中,發生過屢次:修改代碼可是沒有更新文檔,前端仍是按照老舊的文檔進行開發,在聯調過程當中才發現問題的狀況(固然依據開閉原則,對接口的修改是不容許的,可是在項目不穩定階段,這種狀況很難避免)。

原文出處:https://www.cnblogs.com/SimpleWu/p/10261140.html

相關文章
相關標籤/搜索