六、springboot集成Swagger2
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