最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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),跨語(yǔ)言的架構(gòu)設(shè)計(jì),它是一種設(shè)計(jì)風(fēng)格,不是一種標(biāo)準(zhǔn),是一種思想。

說(shuō)明:

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

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

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

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

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

SpringBoot使用swagger

  1. 導(dǎo)入依賴(lài)
  2. 2版本
<!--swagger依賴(lài)-->
<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.編寫(xiě)swagger配置文件

@Configuration
@EnableSwagger2  //開(kāi)啟Swagger2
public class Swagger2Config {
    /**
     * 創(chuàng)建API應(yīng)用
     * apiInfo() 增加API相關(guān)信息
     * 通過(guò)select()函數(shù)返回一個(gè)ApiSelectorBuilder實(shí)例,用來(lái)控制哪些接口暴露給Swagger來(lái)展現(xiàn),
     * 指定掃描的包路徑來(lái)定義指定要建立API的目錄。
     * @return
     */
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(adminApiInfo())
                 //.enable(false) //enable是否啟動(dòng)Swagger 如果為false,則swagger不能在瀏覽器中訪(fǎng)問(wèn)
                .groupName("adminApi")
                .select()
                //RequestHandlerSelectors 配置要掃描接口的方式
                //basePackage: 指定要掃描的包
                //any():掃描全部
                //none()不掃描
                //withClassAnnotation: 掃描類(lèi)上的注解,參數(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.編寫(xiě)接口請(qǐng)求并運(yùn)行

訪(fǎng)問(wèn)方式(本地):http://localhost:8080/swagger-ui.html

使用:

實(shí)體類(lèi):

@ApiModel("用戶(hù)實(shí)體類(lèi)")
public class User{

    @ApiModelProperty("用戶(hù)名")
    public String username;
}

接口方法,參數(shù):

@RestController
public class UserController{
    
    @ApiOperation("User控制類(lèi)")
    @GetMapping(value="/user")
    public String getUser(@ApiParam("用戶(hù)名")String username){
    return "名字為:"+username;
} 
}

常用注解:

@Api:修飾整個(gè)類(lèi),描述Controller的作用,放在類(lèi)上

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

@ApiParam:?jiǎn)蝹€(gè)參數(shù)描述

@ApiModel:用對(duì)象來(lái)接收參數(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="用戶(hù)名",required=true)

Knife4j --Swagger增強(qiáng)工具

使用Knife4j2.06以上版本,springboot版本必須大于等于2.2.x

作用

  • 可以搜索接口名稱(chēng)快速定位接口(搜索功能)
  • 可以下載markdown、HTML、word 等格式文件(下載功能)

1.引入依賴(lài)

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.9</version>
</dependency>

2.添加SwaggerConfiguration作為Swagger2的配置類(lèi)

@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 #開(kāi)啟屏蔽文檔資源

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線(xiàn)程的run()沒(méi)有返回值怎么辦?

    java線(xiàn)程的run()沒(méi)有返回值怎么辦?

    java線(xiàn)程的run()沒(méi)有返回值怎么辦?本文給出了java線(xiàn)程的run()返回值為空的解決辦法,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Java this 關(guān)鍵字的使用方法詳解

    Java this 關(guān)鍵字的使用方法詳解

    這篇文章主要介紹了Java this 關(guān)鍵字的使用方法詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家徹底理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • java桌球小游戲 小球任意角度碰撞

    java桌球小游戲 小球任意角度碰撞

    這篇文章主要為大家詳細(xì)介紹了java桌球小游戲,小球任意角度碰撞,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java List移除相應(yīng)元素的超簡(jiǎn)潔寫(xiě)法分享

    Java List移除相應(yīng)元素的超簡(jiǎn)潔寫(xiě)法分享

    這篇文章主要介紹了Java List移除相應(yīng)元素的超簡(jiǎn)潔寫(xiě)法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 利用Java實(shí)現(xiàn)文件鎖定功能

    利用Java實(shí)現(xiàn)文件鎖定功能

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)文件鎖定功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • 快速解決跨域請(qǐng)求問(wèn)題:jsonp和CORS

    快速解決跨域請(qǐng)求問(wèn)題:jsonp和CORS

    這篇文章主要介紹了快速解決跨域請(qǐng)求問(wèn)題:jsonp和CORS,涉及jsonp和CORS的介紹,分享了前端 jQuery 寫(xiě)法,后端 SpringMVC 配置,后端非 SpringMVC 配置等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • Java利用InputStream類(lèi)實(shí)現(xiàn)文件讀取與處理

    Java利用InputStream類(lèi)實(shí)現(xiàn)文件讀取與處理

    在Java開(kāi)發(fā)中,輸入流(InputStream)是一個(gè)非常重要的概念,它涉及到文件讀寫(xiě)、網(wǎng)絡(luò)傳輸?shù)榷鄠€(gè)方面,InputStream類(lèi)是Java中輸入流的抽象基類(lèi),定義了讀取輸入流數(shù)據(jù)的方法,本文將以InputStream類(lèi)為切入點(diǎn),介紹Java中的輸入流概念及其應(yīng)用,需要的朋友可以參考下
    2023-11-11
  • 公司一般使用的分布式RPC框架及其原理面試

    公司一般使用的分布式RPC框架及其原理面試

    這篇文章主要為大家介紹了公司一般使用的分布式RPC框架及其原理的面試問(wèn)題解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • IDEA不編譯除了.java之外的文件的解決辦法(推薦)

    IDEA不編譯除了.java之外的文件的解決辦法(推薦)

    這篇文章主要介紹了IDEA不編譯除了.java之外的文件的解決辦法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 一文掌握Spring Cookie和Session 是什么及區(qū)別介紹

    一文掌握Spring Cookie和Session 是什么及區(qū)別介紹

    Cookie和Session都是用于在客戶(hù)端和服務(wù)器之間傳遞信息的技術(shù),但它們的工作方式和使用場(chǎng)景有所不同,Cookie是在客戶(hù)端保存用戶(hù)信息的一種機(jī)制,而Session是在服務(wù)器端保存用戶(hù)信息的一種機(jī)制,本文介紹Spring Cookie和Session 是什么,感興趣的朋友一起看看吧
    2025-01-01

最新評(píng)論

色达县| 龙里县| 溧水县| 宜丰县| 田东县| 三门峡市| 江口县| 龙山县| 炉霍县| 牡丹江市| 宜丰县| 泸西县| 包头市| 正阳县| 华蓥市| 巨野县| 大丰市| 平谷区| 四平市| 嫩江县| 西平县| 平顶山市| 琼结县| 马关县| 瓦房店市| 铁力市| 环江| 黄骅市| 龙泉市| 翁牛特旗| 德令哈市| 论坛| 梁河县| 大邑县| 商河县| 中西区| 正宁县| 洪江市| 衢州市| 庆阳市| 视频|