Swagger及knife4j的基本使用詳解
Swagger以及knife4j基本使用
Swagger 介紹:
官網(wǎng):https://swagger.io/
Swagger是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化RESTful風(fēng)格的 Web 服務(wù)
Restful 面向資源
RESTful是一種架構(gòu)的規(guī)范與約束、原則,符合這種規(guī)范的架構(gòu)就是RESTful架構(gòu)
Rest是web服務(wù)的一種架構(gòu)風(fēng)格;使用HTTP,URI,XML,JSON,HTML等廣泛流行的標(biāo)準(zhǔn)和協(xié)議;輕量級,跨平臺,跨語言的架構(gòu)設(shè)計,它是一種設(shè)計風(fēng)格,不是一種標(biāo)準(zhǔn),是一種思想。
說明:
| http方法 | 資源操作 | 冪等 | 安全 |
|---|---|---|---|
| GET | SELECT | 是 | 是 |
| POST | INSERT | 否 | 否 |
| PUT | UPDATE | 是 | 否 |
| DELETE | DELETE | 是 | 否 |
冪等性:對同一REST接口多次訪問,得到的資源狀態(tài)是相同的
安全性:對該REST接口訪問,不會使服務(wù)端資源狀態(tài)發(fā)生改變
優(yōu)點:
- 透明性 --暴露資源存在(資源操作通過http本身語義進(jìn)行描述,不用單獨描述)
- 充分利用HTTP協(xié)議本身語義
- 無狀態(tài) --在調(diào)用一個接口時可以不用考慮上下文,不用考慮當(dāng)前狀態(tài)降低了復(fù)雜度
- HTTP本身提供了豐富的內(nèi)容協(xié)商手段(緩存,資源修改的樂觀并發(fā)控制等可以通過與業(yè)務(wù)無關(guān)的中間件實現(xiàn))
SpringBoot使用swagger
- 導(dǎo)入依賴
- 2版本
<!--swagger依賴--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!--swagger ui--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
3.0版本
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
2.編寫swagger配置文件
@Configuration
@EnableSwagger2 //開啟Swagger2
public class Swagger2Config {
/**
* 創(chuàng)建API應(yīng)用
* apiInfo() 增加API相關(guān)信息
* 通過select()函數(shù)返回一個ApiSelectorBuilder實例,用來控制哪些接口暴露給Swagger來展現(xiàn),
* 指定掃描的包路徑來定義指定要建立API的目錄。
* @return
*/
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(adminApiInfo())
//.enable(false) //enable是否啟動Swagger 如果為false,則swagger不能在瀏覽器中訪問
.groupName("adminApi")
.select()
//RequestHandlerSelectors 配置要掃描接口的方式
//basePackage: 指定要掃描的包
//any():掃描全部
//none()不掃描
//withClassAnnotation: 掃描類上的注解,參數(shù)為一個注解的反射對象
//withMethodeAnnotation: 掃描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.example.swagger.controller"))
//只顯示admin下面的路徑
.paths(Predicates.and(PathSelectors.regex("/admin/.*")))
.build();
}
private ApiInfo adminApiInfo(){
return new ApiInfoBuilder()
.title("api文檔")
.description("系統(tǒng)接口描述")
.version("1.0")
//作者信息
.contact(new Contact("張三","http://baidu.com","12345678@qq.com"))
.build();
}
}3.編寫接口請求并運行
訪問方式(本地):http://localhost:8080/swagger-ui.html
使用:
實體類:
@ApiModel("用戶實體類")
public class User{
@ApiModelProperty("用戶名")
public String username;
}接口方法,參數(shù):
@RestController
public class UserController{
@ApiOperation("User控制類")
@GetMapping(value="/user")
public String getUser(@ApiParam("用戶名")String username){
return "名字為:"+username;
}
}常用注解:
@Api:修飾整個類,描述Controller的作用,放在類上
@ApiOperation:描述一個類的一個方法,或者說一個接口
@ApiParam:單個參數(shù)描述
@ApiModel:用對象來接收參數(shù)
@ApiProperty:用對象接收參數(shù)時,描述對象的一個字段
@ApiResponses:HTTP響應(yīng)整體描述
@ApiResponse:HTTP響應(yīng)其中1個描述
@ApiIgnore:使用該注解忽略這個API
@ApiError :發(fā)生錯誤返回的信息
@ApiImplicitParams:描述由多個 @ApiImplicitParam 注解的參數(shù)組成的請求參數(shù)列表
@ApiImplicitParam:描述一個請求參數(shù),可以配置參數(shù)的中文含義,還可以給參數(shù)設(shè)置默認(rèn)值
//eg:
@ApiImplicitParam(name="username",value="用戶名",required=true)Knife4j --Swagger增強(qiáng)工具
使用Knife4j2.06以上版本,springboot版本必須大于等于2.2.x
作用
- 可以搜索接口名稱快速定位接口(搜索功能)
- 可以下載markdown、HTML、word 等格式文件(下載功能)
1.引入依賴
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.9</version>
</dependency>2.添加SwaggerConfiguration作為Swagger2的配置類
@Configuration
@EnableSwagger2
@EnableKnife4j
//@EnableSwagger2WebMvc 2.6以上報空指針異常則需要添加
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2) // 選擇swagger2版本
.apiInfo(apiInfo()) //定義api文檔匯總信息
.select()
.apis(RequestHandlerSelectors
.basePackage("com.example")) // 指定生成api文檔的包
.paths(PathSelectors.any()) // 指定所有路徑
.build();
}
/**
* 構(gòu)建文檔api信息
*
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("") // 文檔標(biāo)題
.contact(new Contact("", "", "")) //聯(lián)系人信息
.description("") //描述
.version("1.0.1") //文檔版本號
.termsOfServiceUrl("") //網(wǎng)站地址
.build();
}
}3.實現(xiàn)生產(chǎn)環(huán)境關(guān)閉文檔資源
spring: profiles: prod #指定環(huán)境 knife4j: production: true #開啟屏蔽文檔資源
4.實現(xiàn)接口排序
- 針對不同Controller排序:Controller上標(biāo)注
@ApiSupport(order = 序號) - 針對同一個Controller中的不同方法排序:同一個Controller不同接口方法上標(biāo)注
@ApiOperationSupport(order = 序號)
注:更多詳細(xì)配置:swagger文檔增強(qiáng)工具knife4j使用詳解
到此這篇關(guān)于Swagger以及knife4j的基本使用的文章就介紹到這了,更多相關(guān)Swagger knife4j使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java使用RedisTemplate操作Redis遇到的坑
這篇文章主要介紹了Java使用RedisTemplate操作Redis遇到的坑,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
詳解Reactor如何優(yōu)雅Exception異常處理
初識響應(yīng)式編程的時候,除了從命令式的思維方式轉(zhuǎn)變?yōu)楹瘮?shù)式的編程方式外,其中有一個很大的不適應(yīng)的地方就是在面對異常時該怎么處理。本文將通過Project?Reactor的文檔以及源碼來深入解讀,在reactor中是如何優(yōu)雅地實現(xiàn)這異常處理三板斧,希望對大家有所幫助2023-02-02
Java實現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式
Java觀察者模式是一種行為型設(shè)計模式,用于實現(xiàn)對象間的一對多依賴關(guān)系。當(dāng)一個對象的狀態(tài)發(fā)生改變時,它的所有依賴對象都會收到通知并自動更新。觀察者模式可以實現(xiàn)松耦合,增強(qiáng)了系統(tǒng)的可維護(hù)性和可拓展性2023-04-04
ElasticSearch學(xué)習(xí)之Es集群Api操作示例
這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之Es集群Api操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
java中實現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實例
用Java創(chuàng)建文件或目錄非常簡單,下面這篇文章主要給大家介紹了關(guān)于java中實現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實例,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01

