国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【超詳細(xì)】springboot + springdoc-openapi + knife4j 集成案例

這篇具有很好參考價值的文章主要介紹了【超詳細(xì)】springboot + springdoc-openapi + knife4j 集成案例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

springdoc-openapi 簡介

springdoc-openapijava庫有助于使用 spring boot 項(xiàng)目自動生成 API 文檔。 springdoc-openapi通過在運(yùn)行時檢查應(yīng)用程序以根據(jù) spring 配置、類結(jié)構(gòu)和各種注釋推斷 API 語義來工作。

自動生成 JSON/YAML 和 HTML 格式 API 的文檔??梢允褂?swagger-api 注釋通過注釋來完成此文檔。

該庫支持:

  • OpenAPI3

  • SpringBoot (v1, v2 and v3)

  • JSR-303, specifically for @NotNull, @Min, @Max, and @Size.

  • Swagger-ui

  • OAuth 2

  • GraalVM 原生鏡像

為什么使用 springdoc-openapi??

由于之前項(xiàng)目一直使用的是springfox3.0來集成swagger管理API接口文檔,但目前springfox已經(jīng)停止維護(hù)了。最近在升級底層框架時看到spring官方推薦使用springdoc,在自己一步一步查找相關(guān)資料時,發(fā)現(xiàn)國內(nèi)對于這塊的參考資料較少,也不全面。故寫此篇文章來幫助大家快速集成。

Knife4j簡介

Knife4j是一個集Swagger2和OpenAPI3為一體的增強(qiáng)解決方案。

開始集成

Maven引入

首先在maven里引入springdoc-openapi:

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.15</version></dependency>復(fù)制代碼

注釋的區(qū)別

這里需要注意,我們要用swagger3注釋替換swagger2注釋(它已經(jīng)包含在springdoc-openapi-ui依賴項(xiàng)中)。swagger 3 注釋的包是io.swagger.v3.oas.annotations:

@Api -> @Tag@ApiIgnore -> @Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden@ApiImplicitParam -> @Parameter@ApiImplicitParams -> @Parameters@ApiModel -> @Schema@ApiModelProperty(hidden = true) -> @Schema(accessMode = READ_ONLY)@ApiModelProperty -> @Schema@ApiOperation(value = "foo", notes = "bar") -> @Operation(summary = "foo", description = "bar")@ApiParam -> @Parameter@ApiResponse(code = 404, message = "foo") -> @ApiResponse(responseCode = "404", description = "foo")復(fù)制代碼

以下舉幾個簡單的??:

Controller:

@Tag(name = "用戶接口")@RestController@RequestMapping("sys/user")publicclassSysUserController {

    @Resourceprivate ISysUserService sysUserService;

    @Operation(summary = "分頁查詢")@GetMapping("page")public AjaxResult queryPage(SysUserPageDTO dto) {
        PageInfopage= sysUserService.queryPage(dto);
        return AjaxResult.success(page);
    }

    @Operation(summary = "詳情")@GetMapping("{id}")public AjaxResult queryInfo(@PathVariable Long id) {
        SysUserDTOdto= sysUserService.queryById(id);
        return AjaxResult.success(dto);
    }

    @Operation(summary = "新增")@PostMappingpublic AjaxResult save(@RequestBody SysUserDTO dto) {
        Longid= sysUserService.saveInfo(dto);
        return AjaxResult.success(id);
    }
}
復(fù)制代碼

DTO:

@Schema(description = "用戶 數(shù)據(jù)傳輸對象")@Data@Accessors(chain = true)publicclassSysUserDTOimplementsSerializable {

    @Schema(description = "ID")private Long id;

    @Schema(description = "用戶名")private String userName;

    @Schema(description = "真實(shí)姓名")private String realName;

    @Schema(description = "密碼")private String password;

    @Schema(description = "性別(0男,1女)")private Integer sex;

    @Schema(description = "電話號碼")private String phone;

    @Schema(description = "狀態(tài)(0停用,1正常)")private Integer status;
}
復(fù)制代碼

配置

配置文件,更多配置請看:springdoc 核心配置

springdoc:api-docs:# 是否開啟接口文檔enabled:trueswagger-ui:# 持久化認(rèn)證數(shù)據(jù),如果設(shè)置為 true,它會保留授權(quán)數(shù)據(jù)并且不會在瀏覽器關(guān)閉/刷新時丟失persistAuthorization:true復(fù)制代碼

配置文檔:

? 這里我更推薦將文檔標(biāo)題、作者等信息寫到application里,然后通過@ConfigurationProperties引入,會更優(yōu)雅??

@Configuration@AutoConfigureBefore(SpringDocConfiguration.class)publicclassOpenApiConfig {

    privatestaticfinalStringTOKEN_HEADER="Authorization";

    @Beanpublic OpenAPI openApi() {
        // 針對 knife4j(增強(qiáng)UI),這里添加全局請求頭(addParameters)無效,只能按組添加,待官方解決returnnewOpenAPI()
                .components(
                        newComponents().addSecuritySchemes(TOKEN_HEADER,
                                newSecurityScheme()
                                        .type(SecurityScheme.Type.APIKEY)
                                        // 這里配置 bearer 后,你的請求里會自動在 token 前加上 Bearer
                                        .scheme("bearer")
                                        .bearerFormat("JWT")
                        ).addParameters(TOKEN_HEADER,
                                newParameter()
                                        .in("header")
                                        .schema(newStringSchema())
                                        .name(tokenHeader)
                        ))
                .info(
                        newInfo()
                                .title("文檔標(biāo)題")
                                .description("文檔描述")
                                .contact(newContact().name("作者").email("郵箱").url("可以寫你的博客地址或不填"))
                                // 參考 Apache 2.0 許可及地址,你可以不配此項(xiàng)
                                .license(newLicense().name("Apache 2.0").url("https://www.apache.org/licenses/LICENSE-2.0.html"))
                                .version("0.1")
                )
                // 引入外部的文檔,我這里引得是 springdoc 官方文檔地址,你可以不配此項(xiàng)
                .externalDocs(newExternalDocumentation()
                        .description("SpringDoc Full Documentation")
                        .url("https://springdoc.org/")
                );
    }

    /**
     * GroupedOpenApi 是對接口文檔分組,類似于 swagger 的 Docket
     * 
     * @return
     */@Beanpublic GroupedOpenApi authApi() {
        return GroupedOpenApi.builder()
                // 組名
                .group("認(rèn)證接口")
                // 掃描的路徑,支持通配符
                .pathsToMatch("/login")
                // 掃描的包
                .packagesToScan("com.demo.controller.auth")
                .build();
    }
    
    @Beanpublic GroupedOpenApi sysApi() {
        return GroupedOpenApi.builder()
                .group("系統(tǒng)接口")
                .pathsToMatch("/sys/**")
                // 添加自定義配置,這里添加了一個用戶認(rèn)證的 header,否則 knife4j 里會沒有 header
                .addOperationCustomizer((operation, handlerMethod) -> operation.security(
                        Collections.singletonList(newSecurityRequirement().addList(TOKEN_HEADER)))
                )
                .build();
    }
}
復(fù)制代碼

訪問文檔

配置完成之后,就可以訪問文檔地址:http://localhost:${port}/${context-path}/swagger-ui/html.index

? 如果你加入了攔截器或引入了spring-security等權(quán)限框架,需要放通文檔地址及靜態(tài)資源:

- /**/*.html
- /**/*.css
- /**/*.js
- /**/api-docs/**
復(fù)制代碼

至此一個簡單的接口文檔就生成了,是不是很簡單??

【超詳細(xì)】springboot + springdoc-openapi + knife4j 集成案例

集成knife4j

Maven引入

在maven里引入knife4j

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</artifactId><version>4.0.0</version></dependency>復(fù)制代碼

? 如果你使用的是SpringBoot3,需要注意:

  • Spring Boot 3 只支持OpenAPI3規(guī)范

  • Knife4j提供的starter已經(jīng)引用springdoc-openapi的jar,開發(fā)者需注意避免jar包沖突

  • JDK版本必須 >= 17

而且需要引入這個包:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.0.0</version></dependency>復(fù)制代碼

訪問文檔地址

然后你就可以直接訪問文檔地址了:http://localhost:${port}/${context-path}/doc.html

【超詳細(xì)】springboot + springdoc-openapi + knife4j 集成案例

至此我們就集成完了,有其他疑問歡迎在評論區(qū)提出來??

作者:penga

鏈接:https://juejin.cn/post/7214015651828006967

、文章來源地址http://www.zghlxwxcb.cn/news/detail-425274.html

到了這里,關(guān)于【超詳細(xì)】springboot + springdoc-openapi + knife4j 集成案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot 3.x 引入springdoc-openapi (內(nèi)置Swagger UI、webmvc-api)

    Spring Boot 3.x 引入springdoc-openapi (內(nèi)置Swagger UI、webmvc-api)

    接觸的原因 因開發(fā)自己的項(xiàng)目時,寫接口文檔很繁瑣,查到后端都在用 swagger 等接口工具來記錄接口文檔,于是學(xué)習(xí)了一下,本文記錄個人配置過程,有問題歡迎指正交流?? Swagger: Swagger是一種Rest API的表示方式,它是標(biāo)準(zhǔn)的、語言無關(guān)的工具,這種表示方式不僅人可讀,

    2024年04月27日
    瀏覽(23)
  • 【Openapi-ui+Knife】springdoc-openapi-ui 整合 knife,多模塊分組,腳手架

    【Openapi-ui+Knife】springdoc-openapi-ui 整合 knife,多模塊分組,腳手架

    ?pom文件: yum文件: swagger配置文件 訪問swagger-ui: 訪問doc.html:?http://localhost:18080/doc.html

    2024年02月04日
    瀏覽(40)
  • springdoc-openapi-ui 整合 knife,多模塊分組,腳手架

    springdoc-openapi-ui 整合 knife,多模塊分組,腳手架

    ?pom文件: yum文件: swagger配置文件 訪問swagger-ui: 訪問doc.html:?http://localhost:18080/doc.html

    2024年02月09日
    瀏覽(15)
  • springboot集成knife4j詳細(xì)教程

    springboot集成knife4j詳細(xì)教程

    使用原生的swagger作為接口文檔,功能不夠強(qiáng)大,并且默認(rèn)的ui比較簡陋,不符合大眾審美。所以實(shí)際開發(fā)中推薦使用knife4j對swagger進(jìn)行增強(qiáng)。knife4j的地址:https://gitee.com/xiaoym/knife4j 想要使用knife4j非常簡單,只要在Springboot項(xiàng)目中引入knife4j的依賴即可 注意:引入knife4j后會自動

    2024年02月20日
    瀏覽(22)
  • SpringBoot整合knife4j(快速入門超詳細(xì)版)

    SpringBoot整合knife4j(快速入門超詳細(xì)版)

    ?? @ 作者: Eric ?? @ 主頁: https://blog.csdn.net/weixin_47316183?type=blog ?? @ 主題: SpringBoot整合knife4j(快速入門超詳細(xì)版) ?? @ 創(chuàng)作時間: 2023年08月01日 在日常開發(fā)中,寫接口文檔是我們必不可少的,而Knife4j就是一個接口文檔工具,可以看作是Swagger的升級版,但是界面比S

    2024年02月10日
    瀏覽(26)
  • SpringBoot 整合knife4j

    SpringBoot 整合knife4j

    Knife4j是一款基于Swagger 2的在線API文檔框架 添加依賴 創(chuàng)建 Swagger 配置依賴 application.yml配置文件 響應(yīng)參數(shù) tips: http://127.0.0.1:8080/doc.html 這里端口,就是你運(yùn)行項(xiàng)目的端口 springboot 中 knife4j的完整參數(shù)如下: 接口添加作者 添加作者有倆種方式 在方法上使用注解 @ApiOperationSupport

    2024年02月14日
    瀏覽(23)
  • SpringBoot整合Knife4j

    SpringBoot整合Knife4j

    ?作者簡介:大家好,我是Leo,熱愛Java后端開發(fā)者,一個想要與大家共同進(jìn)步的男人??????個人主頁:Leo的博客??當(dāng)前專欄: 循序漸進(jìn)學(xué)SpringBoot ?特色專欄: MySQL學(xué)習(xí) ??本文內(nèi)容:SpringBoot整合Knife4j ??個人知識庫: Leo知識庫,歡迎大家訪問

    2024年04月11日
    瀏覽(28)
  • 第十三章 SpringBoot整合knife4j

    第十三章 SpringBoot整合knife4j

    ??作者主頁:青花鎖 ??簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??、Java微服務(wù)架構(gòu)公號作者?? ??簡歷模板、學(xué)習(xí)資料、面試題庫、技術(shù)互助 ??文末獲取聯(lián)系方式 ?? [Java項(xiàng)目實(shí)戰(zhàn)] 介紹Java組件安裝、使用;手寫框架等 [Aws服務(wù)器實(shí)戰(zhàn)] Aws Linux服務(wù)器上操作nginx、git、JDK、Vue等 [Java微服務(wù)

    2024年02月03日
    瀏覽(21)
  • springboot整合Knife4j--token頭驗(yàn)證

    springboot整合Knife4j--token頭驗(yàn)證

    Knife4j其實(shí)就是增強(qiáng)版本的swagger,過多的介紹我就不說了,一搜一大把,直接開始吧哈哈 1.引入pom依賴 需要其他版本的可以去https://mvnrepository.com/ ?自己選擇。 2.配置類 鏈?zhǔn)秸{(diào)用時api指定需要掃描的包,如果在配置加入@ConditionalOnProperty注解可以在yml文件配置用戶名密碼等等,

    2023年04月08日
    瀏覽(25)
  • springboot整合knife4j版本錯誤解決辦法

    springboot整合knife4j版本錯誤解決辦法

    在springboot 2.xx的版本中整合knife4j出現(xiàn)如下錯誤解決辦法: 如果 springboot version = 2.6,需要添加如下配置(yml文件中): spring: mvc: pathmatch: matching-strategy: ANT_PATH_MATCHER 第二種辦法可以到官網(wǎng)快速開始 | Knife4j (xiaominfo.com) 下載最新的依賴 dependency groupIdcom.github.xiaoymin/groupId artifa

    2023年04月20日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包