欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Swagger及knife4j的基本使用詳解

 更新時(shí)間:2022年08月22日 15:38:19   作者:ProsperousEnding  
Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化RESTful風(fēng)格的?Web?服務(wù),這篇文章主要介紹了Swagger以及knife4j的基本使用,需要的朋友可以參考下

Swagger以及knife4j基本使用

Swagger 介紹:

官網(wǎng):https://swagger.io/

Swagger是一個(gè)規(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é)議;輕量級(jí),跨平臺(tái),跨語言的架構(gòu)設(shè)計(jì),它是一種設(shè)計(jì)風(fēng)格,不是一種標(biāo)準(zhǔn),是一種思想。

說明:

http方法資源操作冪等安全
GETSELECT
POSTINSERT
PUTUPDATE
DELETEDELETE

冪等性:對(duì)同一REST接口多次訪問,得到的資源狀態(tài)是相同的

安全性:對(duì)該REST接口訪問,不會(huì)使服務(wù)端資源狀態(tài)發(fā)生改變

優(yōu)點(diǎn):

  • 透明性 --暴露資源存在(資源操作通過http本身語義進(jìn)行描述,不用單獨(dú)描述)
  • 充分利用HTTP協(xié)議本身語義
  • 無狀態(tài) --在調(diào)用一個(gè)接口時(shí)可以不用考慮上下文,不用考慮當(dāng)前狀態(tài)降低了復(fù)雜度
  • HTTP本身提供了豐富的內(nèi)容協(xié)商手段(緩存,資源修改的樂觀并發(fā)控制等可以通過與業(yè)務(wù)無關(guān)的中間件實(shí)現(xiàn))

SpringBoot使用swagger

  1. 導(dǎo)入依賴
  2. 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ù)返回一個(gè)ApiSelectorBuilder實(shí)例,用來控制哪些接口暴露給Swagger來展現(xiàn),
     * 指定掃描的包路徑來定義指定要建立API的目錄。
     * @return
     */
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(adminApiInfo())
                 //.enable(false) //enable是否啟動(dòng)Swagger 如果為false,則swagger不能在瀏覽器中訪問
                .groupName("adminApi")
                .select()
                //RequestHandlerSelectors 配置要掃描接口的方式
                //basePackage: 指定要掃描的包
                //any():掃描全部
                //none()不掃描
                //withClassAnnotation: 掃描類上的注解,參數(shù)為一個(gè)注解的反射對(duì)象
                //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.編寫接口請(qǐng)求并運(yùn)行

訪問方式(本地):http://localhost:8080/swagger-ui.html

使用:

實(shí)體類:

@ApiModel("用戶實(shí)體類")
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:修飾整個(gè)類,描述Controller的作用,放在類上

@ApiOperation:描述一個(gè)類的一個(gè)方法,或者說一個(gè)接口

@ApiParam:單個(gè)參數(shù)描述

@ApiModel:用對(duì)象來接收參數(shù)

@ApiProperty:用對(duì)象接收參數(shù)時(shí),描述對(duì)象的一個(gè)字段

@ApiResponses:HTTP響應(yīng)整體描述

@ApiResponse:HTTP響應(yīng)其中1個(gè)描述

@ApiIgnore:使用該注解忽略這個(gè)API

@ApiError :發(fā)生錯(cuò)誤返回的信息

@ApiImplicitParams:描述由多個(gè) @ApiImplicitParam 注解的參數(shù)組成的請(qǐng)求參數(shù)列表

@ApiImplicitParam:描述一個(gè)請(qǐng)求參數(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以上報(bào)空指針異常則需要添加
@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")     //文檔版本號(hào)
                .termsOfServiceUrl("")     //網(wǎng)站地址
                .build();
    }
}

3.實(shí)現(xiàn)生產(chǎn)環(huán)境關(guān)閉文檔資源

spring: 
  profiles: prod #指定環(huán)境
knife4j:
   production: true #開啟屏蔽文檔資源

4.實(shí)現(xiàn)接口排序

  • 針對(duì)不同Controller排序:Controller上標(biāo)注@ApiSupport(order = 序號(hào))
  • 針對(duì)同一個(gè)Controller中的不同方法排序:同一個(gè)Controller不同接口方法上標(biāo)注@ApiOperationSupport(order = 序號(hào))

注:更多詳細(xì)配置:swagger文檔增強(qiáng)工具knife4j使用詳解

到此這篇關(guān)于Swagger以及knife4j的基本使用的文章就介紹到這了,更多相關(guān)Swagger knife4j使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用RedisTemplate操作Redis遇到的坑

    Java使用RedisTemplate操作Redis遇到的坑

    這篇文章主要介紹了Java使用RedisTemplate操作Redis遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java實(shí)現(xiàn)簡單的驗(yàn)證碼功能

    java實(shí)現(xiàn)簡單的驗(yàn)證碼功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單的驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 詳解Java中的pinpoint1.8.5安裝及使用指南

    詳解Java中的pinpoint1.8.5安裝及使用指南

    pinpoint是開源在github上的一款A(yù)PM監(jiān)控工具,它是用Java編寫的,用于大規(guī)模分布式系統(tǒng)監(jiān)控。這篇文章主要介紹了pinpoint1.8.5安裝及使用指南,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 詳解Reactor如何優(yōu)雅Exception異常處理

    詳解Reactor如何優(yōu)雅Exception異常處理

    初識(shí)響應(yīng)式編程的時(shí)候,除了從命令式的思維方式轉(zhuǎn)變?yōu)楹瘮?shù)式的編程方式外,其中有一個(gè)很大的不適應(yīng)的地方就是在面對(duì)異常時(shí)該怎么處理。本文將通過Project?Reactor的文檔以及源碼來深入解讀,在reactor中是如何優(yōu)雅地實(shí)現(xiàn)這異常處理三板斧,希望對(duì)大家有所幫助
    2023-02-02
  • Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java觀察者模式是一種行為型設(shè)計(jì)模式,用于實(shí)現(xiàn)對(duì)象間的一對(duì)多依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),它的所有依賴對(duì)象都會(huì)收到通知并自動(dòng)更新。觀察者模式可以實(shí)現(xiàn)松耦合,增強(qiáng)了系統(tǒng)的可維護(hù)性和可拓展性
    2023-04-04
  • 關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法

    關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法

    404錯(cuò)誤是網(wǎng)站常見的錯(cuò)誤之一,出現(xiàn)的原因很多,解決方法也有很多種,這篇文章主要給大家介紹了關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • ElasticSearch學(xué)習(xí)之Es集群Api操作示例

    ElasticSearch學(xué)習(xí)之Es集群Api操作示例

    這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之Es集群Api操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Tomcat+Eclipse亂碼問題解決方法與步驟

    Tomcat+Eclipse亂碼問題解決方法與步驟

    亂碼問題是大家在日常開發(fā)過程中經(jīng)常會(huì)遇到的問題,由于各自環(huán)境的不同,解決起來也費(fèi)時(shí)費(fèi)力,本文主要介紹一般性亂碼問題的解決方法與步驟,開發(fā)工具采用Eclipse+Tomcat,統(tǒng)一設(shè)置項(xiàng)目編碼UTF-8為例,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • 巧用FutureTask 線程池輕松解決接口超時(shí)問題

    巧用FutureTask 線程池輕松解決接口超時(shí)問題

    這篇文章主要為大家介紹了使用FutureTask結(jié)合線程池輕松解決接口超時(shí)問題的巧妙用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例

    java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例

    用Java創(chuàng)建文件或目錄非常簡單,下面這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評(píng)論