SpringBoot整合Swagger框架過程解析
阿新 • • 發佈:2020-05-26
Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。
總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新。檔案的方法、引數和模型緊密整合到伺服器端的程式碼,允許 API 來始終保持同步。Swagger 讓部署管理和使用功能強大的 API 從未如此簡單。
引入maven依賴
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> <scope>provided</scope> </dependency>
建立配置類
package com.example.demo.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.env.Profiles; 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; import java.util.ArrayList; /** * @author yvioo。 */ @Configuration @EnableSwagger2 //開啟Swagger2 public class SwaggerConfig { /** * 配置Swagger的Docket的bean例項 * @return */ @Bean public Docket docket(Environment environment) { //設定只在開發中環境中啟動swagger Profiles profiles=Profiles.of("dev"); //表示如果現在是dev環境,則返回true 開啟swagger boolean flag=environment.acceptsProfiles(profiles); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) //是否啟動swagger 預設啟動 .enable(flag) //所在分組 .groupName("yvioo") .select() //指定掃描的包路徑 .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) //指定掃描的請求,這裡表示掃描 /hello/ 的請求 //.paths(PathSelectors.ant("/hello/**")) .build(); } /** * 配置ApiInfo資訊 * @return */ private ApiInfo apiInfo() { //作者資訊 Contact author = new Contact("yvioo","https://www.cnblogs.com/pxblog/","[email protected]"); return new ApiInfo( "Swagger測試","Swagger描述","1.0","urn:tos",author,"Apache 2.0","http://www.apache.org/licenses/LICENSE-2.0",new ArrayList() ); } }
測試使用者實體類
User.java
package com.example.demo.entity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @ApiModel("使用者實體類 User") //增加實體類介面註釋 @Data //使用Lombok外掛自動生成get set方法,這樣才能在swagger中顯示屬性值 public class User { @ApiModelProperty("使用者ID") //增加欄位介面註釋 private Integer id; @ApiModelProperty("使用者名稱") private String username; }
測試控制器
SwaggerController.java
package com.example.demo.controller; import com.example.demo.entity.User; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class SwaggerController { @GetMapping("/hello") public String hello(){ return "hello"; } /** * 介面返回值含有實體類,就會被swagger掃描 * * @return */ @ApiOperation("查詢使用者方法註釋") @GetMapping(value = "/get/{id}") public User get(@ApiParam("請求引數註釋") @PathVariable(value = "id")Integer id){ return new User(); } }
使用dev環境 啟動專案後 瀏覽器開啟http://localhost:8081/swagger-ui.html#/ 我這裡用的埠是8081
顯示效果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。