您好,登錄后才能下訂單哦!
這篇文章主要介紹了Swagger及knife4j怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Swagger及knife4j怎么使用文章都會有所收獲,下面我們一起來看看吧。
Swagger是一個規范和完整的框架,用于生成、描述、調用和可視化RESTful風格的 Web 服務
RESTful是一種架構的規范與約束、原則,符合這種規范的架構就是RESTful架構
Rest是web服務的一種架構風格;使用HTTP,URI,XML,JSON,HTML等廣泛流行的標準和協議;輕量級,跨平臺,跨語言的架構設計,它是一種設計風格,不是一種標準,是一種思想。
說明:
http方法 | 資源操作 | 冪等 | 安全 |
---|---|---|---|
GET | SELECT | 是 | 是 |
POST | INSERT | 否 | 否 |
PUT | UPDATE | 是 | 否 |
DELETE | DELETE | 是 | 否 |
冪等性:對同一REST接口多次訪問,得到的資源狀態是相同的
安全性:對該REST接口訪問,不會使服務端資源狀態發生改變
優點:
透明性 --暴露資源存在(資源操作通過http本身語義進行描述,不用單獨描述)
充分利用HTTP協議本身語義
無狀態 --在調用一個接口時可以不用考慮上下文,不用考慮當前狀態降低了復雜度
HTTP本身提供了豐富的內容協商手段(緩存,資源修改的樂觀并發控制等可以通過與業務無關的中間件實現)
導入依賴
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 { /** * 創建API應用 * apiInfo() 增加API相關信息 * 通過select()函數返回一個ApiSelectorBuilder實例,用來控制哪些接口暴露給Swagger來展現, * 指定掃描的包路徑來定義指定要建立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: 掃描類上的注解,參數為一個注解的反射對象 //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("系統接口描述") .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; }
接口方法,參數:
@RestController public class UserController{ @ApiOperation("User控制類") @GetMapping(value="/user") public String getUser(@ApiParam("用戶名")String username){ return "名字為:"+username; } }
常用注解:
@Api:修飾整個類,描述Controller的作用,放在類上 @ApiOperation:描述一個類的一個方法,或者說一個接口 @ApiParam:單個參數描述 @ApiModel:用對象來接收參數 @ApiProperty:用對象接收參數時,描述對象的一個字段 @ApiResponses:HTTP響應整體描述 @ApiResponse:HTTP響應其中1個描述 @ApiIgnore:使用該注解忽略這個API @ApiError :發生錯誤返回的信息 @ApiImplicitParams:描述由多個 @ApiImplicitParam 注解的參數組成的請求參數列表 @ApiImplicitParam:描述一個請求參數,可以配置參數的中文含義,還可以給參數設置默認值 //eg: @ApiImplicitParam(name="username",value="用戶名",required=true)
使用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(); } /** * 構建文檔api信息 * * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("") // 文檔標題 .contact(new Contact("", "", "")) //聯系人信息 .description("") //描述 .version("1.0.1") //文檔版本號 .termsOfServiceUrl("") //網站地址 .build(); } }
3.實現生產環境關閉文檔資源
spring: profiles: prod #指定環境 knife4j: production: true #開啟屏蔽文檔資源
4.實現接口排序
針對不同Controller排序:Controller上標注@ApiSupport(order = 序號)
針對同一個Controller中的不同方法排序:同一個Controller不同接口方法上標注@ApiOperationSupport(order = 序號)
關于“Swagger及knife4j怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Swagger及knife4j怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。