07SpringBoot整合Swagger
Swagger簡介:
前後端分離問題的出現造就了Swagger的出現,問題就是:前後端的整合,前端或者後端無法做到及時協商,儘早解決,最終會導致問題集中的爆發。Swagger的出現實時跟蹤了最新的API,降低整合風險。
Swagger是個優秀的工具,現在國內已經有很多的中小型網際網路公司都在使用它,相較於傳統的要先出Word介面文件再測試的方式,顯然這樣也更符合現在的快速迭代開發行情。當然了,提醒下大家在正式環境要記得關閉Swagger,一來出於安全考慮二來也可以節省執行時記憶體。
優點
- 號稱世界上最流行的API框架
- Restful API文件自動生成器==>API文件與API定義同步更新
- 直接執行,線上測試API
- 支援多種語言,如:JAVA PHP等
- 官網:https://swagger.io/
SpringBoot整合Swagger
要求:jdk1.8+否則swagger2無法執行。
步驟:
1.新增Maven依賴
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.onsoul</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.2</version>
</dependency>
2.要使用Swagger,我們需要編寫一個配置類,SwaggerConfig來配置Swagger
@Configuration//配置類
@EnableSwagger2//開啟Swaagger2的自動配置
public class SwaggerConfig{
}
訪問:http://localhost:8080/swagger-ui.html,可以看到以下頁面
配置Swagger
1.Swagger的例項Bean是Docket,所以通過配置Docket例項來配置Swagger
@Bean//配置docket以配置Swagger具體引數
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2);
}
2.可以通過apilnfo()屬性配置文件資訊
//配置文件資訊
private ApiInfo apiInfo(){
Contact contact=new Contact("王昌軍",
"https://mp.csdn.net/console/home?spm=1010.2135.3001.4503",
"1518461697@qq.com");
return new ApiInfo("王昌軍的Swagger的文件",//標題
"要什麼頭髮啊",//描述
"2.0",//版本
"https://mp.csdn.net/console/home?spm=1010.2135.3001.4503",//組織連線
contact,//上面的聯絡人資訊
"Apache 2.0",//許可
"http://www.apache.org/licenses/LICENSE-2.0",//許可連結
new ArrayList());//擴充套件
}
3.將Docket例項關聯上apilInfo()
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2).apilnfo(apilnfo);
}
重啟專案。訪問頁面:
配置掃描介面
1.構建Docket時通過select()方法配置要掃描的介面
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apilnfo(apilnfo)
.select()//通過select方法去配置掃描的介面,RequestHandlerSelectors配置如何掃描介面
.apis(RequestHandlerSelectors.basePackage("com.wang.controller"))
.build();
}
重啟專案測試後,根據配置掃描介面的路徑,可以看到一個類:
除了通過包路徑配置掃描介面,可以通過配置其他事方式掃描介面,這裡列舉了所有的配置方式:
- any() //掃默所有,專案中的所有介面都會被掃描到
- none()//不掃描介面
- withMethodAnnotation(final Class<? extends Annotation> annotation)//通過方法上的註解掃描,例如:withMethodAnnotation(GetMapping.class)只掃描到get請求
- withClassAnnotation(final Class<? extends Annotation> annotation)//通過類上的註解掃描,例如:withClassAnnotation(Controller.class)只掃描有controller註解類中的介面
- basePackage(final String basePackage)//根據包的路徑掃描介面
除此以外,我們還可以配置介面掃描的過濾,接在.apis()下:
.apis(RequestHandlerSelectors.basePackage("com.wang.controller"))//配置要掃描的包
.paths(PathSelectors.ant("/wang/**"))//過濾路徑
配置Swagger開關
1.通過enable()方法配置是否啟用swagger,如果是false,swagger將不能在瀏覽器中訪問,可以配合切換test環境和dev環境
public Docket docket(Environment environment){
//設定要顯示的環境
Profiles profiles = Profiles.of("dev","test");
//判斷是否屬於在此環境當中
boolean b = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apilnfo(apilnfo)
.enable(b)
...........
2.配置多個分組,可以用groupName()
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("group1");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("group2");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("group3");
}
重啟專案檢視即可
Swagger註解
1.實體類配置註釋
@ApiModel("使用者實體類")
public class User {
@ApiModelProperty("使用者名稱")
private String name;
@ApiModelProperty("密碼")
private String password;
}
注:並不是因為@ApiModel這個註解讓實體顯示在這裡了,而是隻要出現在介面方法的返回值上的實體都會顯示在這裡,而@ApiModel和@ApiModelProperty這兩個註解只是為實體新增註釋的。
@ApiModel為類新增註釋
@ApiModelProperty為類屬性新增註釋
常見註解
@Api(tags = “xxx模組說明”) 作用在模組類上
@ApiOperation(“xxx介面說明”) 作用在介面方法上
@ApiModel(“xxxPOJO說明”) 作用在模型類上:如VO、BO
@ApiModelProperty(value = “xxx屬性說明”,hidden = true) 作用在類方法和屬性上,hidden設定為true可以隱藏該屬性
@ApiParam(“xxx引數說明”)
例如:
@ApiOperation("王的介面")
@PostMapping("/wang")
@ResponseBody
public String kuang(@ApiParam("這個名字會被返回")String username){
return username;
}
相關文章
- SpringBoot整合SwaggerSpring BootSwagger
- Swagger 2.0 整合配置Swagger
- Node express 整合SwaggerExpressSwagger
- Spring Boot整合SwaggerSpring BootSwagger
- Spring Boot 快速整合SwaggerSpring BootSwagger
- 【Spring Boot】快速整合SwaggerSpring BootSwagger
- SpringBoot整合Swagger-UISpring BootSwaggerUI
- springboot整合swagger2Spring BootSwagger
- springboot整合swagger遇到的坑Spring BootSwagger
- springboot3.2.3如何整合swaggerSpring BootSwagger
- SpringBoot學習之整合SwaggerSpring BootSwagger
- Spring Boot整合swagger使用教程Spring BootSwagger
- Spring Boot 整合 SpringDoc Swagger 3Spring BootSwagger
- (九) SpringBoot起飛之路-整合/整合Swagger 2 And 3Spring BootSwagger
- SpringBoot整合Swagger+Knife4jSpring BootSwagger
- asp.net core 整合swagger uiASP.NETSwaggerUI
- SpringBoot整合Swagger2及使用Spring BootSwagger
- Spring Boot系列十九 Spring boot整合 swaggerSpring BootSwagger
- 專案整合Swagger遇到的錯誤Swagger
- Spring Boot 整合 Swagger 構建介面文件Spring BootSwagger
- springboot整合swagger實戰(基礎版)Spring BootSwagger
- 學習Spring Boot:(六) 整合Swagger2Spring BootSwagger
- 三分鐘搞定 Springboot 和Swagger 整合Spring BootSwagger
- 返回給前端樣式資料整合Swagger前端Swagger
- Spring Boot整合Swagger報錯:"this.condition" is nullSpring BootSwaggerNull
- Springboot整合Swagger2無法正常啟動Spring BootSwagger
- springboot整合swagger。完爆前後端除錯Spring BootSwagger後端除錯
- 基於gin的golang web開發:整合swaggerGolangWebSwagger
- spring-boot-route(五)整合Swagger生成介面文件SpringbootSwagger
- Springboot系列(七) 整合介面文件swagger,使用,測試Spring BootSwagger
- 後端整合 Swagger + Knife4j 介面文件後端Swagger
- 記錄springboot 3.3.5 版本整合 swagger +spring security + jwtSpring BootSwaggerJWT
- SpringBoot2.6.x及以上版本整合swagger文件Spring BootSwagger
- springMVC整合swagger2來輸出介面文件SpringMVCSwagger
- .NET Core 中的 Swagger 應用與微服務場景下的Swagger Api 整合顯示Swagger微服務API
- SpringBoot整合Swagger2,3分鐘輕鬆入手!Spring BootSwagger
- Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2Spring BootSwagger
- SpringBoot2.3.0整合MyBatis-Plus3.4.0和Swagger3.0Spring BootMyBatisS3Swagger