中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Swagger及knife4j怎么使用

發布時間:2022-08-23 11:26:39 來源:億速云 閱讀:252 作者:iii 欄目:開發技術

這篇文章主要介紹了Swagger及knife4j怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Swagger及knife4j怎么使用文章都會有所收獲,下面我們一起來看看吧。

    Swagger 介紹:

    Swagger是一個規范和完整的框架,用于生成、描述、調用和可視化RESTful風格的 Web 服務

    Restful 面向資源

    RESTful是一種架構的規范與約束、原則,符合這種規范的架構就是RESTful架構

    Rest是web服務的一種架構風格;使用HTTP,URI,XML,JSON,HTML等廣泛流行的標準和協議;輕量級,跨平臺,跨語言的架構設計,它是一種設計風格,不是一種標準,是一種思想。

    說明:

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

    冪等性:對同一REST接口多次訪問,得到的資源狀態是相同的

    安全性:對該REST接口訪問,不會使服務端資源狀態發生改變

    優點:

    • 透明性 --暴露資源存在(資源操作通過http本身語義進行描述,不用單獨描述)

    • 充分利用HTTP協議本身語義

    • 無狀態 --在調用一個接口時可以不用考慮上下文,不用考慮當前狀態降低了復雜度

    • HTTP本身提供了豐富的內容協商手段(緩存,資源修改的樂觀并發控制等可以通過與業務無關的中間件實現)

    SpringBoot使用swagger

    1. 導入依賴

    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 {
        /**
         * 創建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)

    Knife4j --Swagger增強工具

    使用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怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    大姚县| 湖州市| 长宁区| 察雅县| 泗阳县| 镇巴县| 南陵县| 通海县| 新巴尔虎左旗| 南木林县| 泌阳县| 汶川县| 牙克石市| 禹州市| 麦盖提县| 阳谷县| 界首市| 和平县| 宣威市| 江北区| 清丰县| 太和县| 岳普湖县| 张家口市| 喀喇| 武定县| 樟树市| 镇康县| 当阳市| 临江市| 石嘴山市| 峨眉山市| 青州市| 永德县| 阿城市| 大方县| 吴桥县| 夏津县| 临夏县| 葵青区| 锦州市|