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

springboot3.0.11-SNAPSHOT使用knife4j-openapi3所遇見(jiàn)的問(wèn)題

這篇具有很好參考價(jià)值的文章主要介紹了springboot3.0.11-SNAPSHOT使用knife4j-openapi3所遇見(jiàn)的問(wèn)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.本地工作環(huán)境

ide2021

jdk17

springboot3.0.11-SNAPSHOT

2.使用knife4j-openapi3的原因

在使用springboot3寫完一個(gè)項(xiàng)目后,想快速生成一篇接口文檔,供自己觀看。在網(wǎng)上沖浪一段時(shí)間后,發(fā)現(xiàn)使用Swagger文檔比較合適,通過(guò)少量的注解來(lái)完成一篇復(fù)雜的文檔。說(shuō)干就干,直接cope網(wǎng)上的資料寫一個(gè)demo來(lái)用,發(fā)現(xiàn)項(xiàng)目無(wú)法正常啟動(dòng)。在翻閱了博客后,發(fā)現(xiàn)Swagger2暫時(shí)無(wú)法適配springboot3。后再其他博客中發(fā)現(xiàn)可以使用openapi兼容springboot3,同時(shí),knife4j是對(duì)swagger的美化,所以使用knife4j-openapi3。

3.進(jìn)行配置

對(duì)應(yīng)的依賴如下:

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

配置文件采用yml格式,所以在配置中對(duì)knife4j進(jìn)行如下簡(jiǎn)單配置

# 在線文檔配置
springdoc:
  swagger-ui:
    # 配置swagger-ui界面訪問(wèn)路徑
    path: /swagger-ui.html
    # 包掃描路徑
  packages-to-scan: com.pjx.sys.controller
  # 默認(rèn)開(kāi)啟wend
  api-docs:
    enabled: true

上述的 packages-to-scan 也就是包掃描路徑,是對(duì)控制層進(jìn)行掃描,也就是你的controller層,只要掃描到外面那一層,不要深入到內(nèi)部。路徑可以直接復(fù)制。

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

此時(shí)還需對(duì)knife4j進(jìn)行配置,才可以使用。

在自己的項(xiàng)目中創(chuàng)建SwaggerConfig類進(jìn)行配置

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfig {

    @Bean
    public OpenAPI springShopOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("標(biāo)題")
                        //描敘
                        .description("我的API文檔")
                        //版本
                        .version("v1")
                        //作者信息,自行設(shè)置
                        .contact(new Contact().name("彭").email("11111").url("https://www.baidu.com"))
                        //設(shè)置接口文檔的許可證信息
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")));
    }

}

在這里基本的配置算是完成了,接下來(lái)用一個(gè)簡(jiǎn)單的demo演示

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

上面是對(duì)應(yīng)的結(jié)構(gòu),下面分別為控制層和pojo

import com.example.test.pojo.Books;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Tag(name = "測(cè)試",description = "描述")
@RestController
@RequestMapping("/getBooks")
public class BookController {

    @GetMapping
    @Operation(summary = "測(cè)試接口")
    public Books getBooks(){
        Books books = new Books();
        books.setId(1);
        return books;
    }
}
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Schema
@Data
public class Books {
    @Schema(name = "id",description = "用戶id",defaultValue = "12",example = "1")
    private Integer id;
}

以上完成后,一個(gè)簡(jiǎn)單的文檔就完成了,直接看效果。

doc.html

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

swagger-ui

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

在demo完成,發(fā)現(xiàn)沒(méi)有問(wèn)題后,便開(kāi)始在自己的項(xiàng)目中導(dǎo)入配置,然后出現(xiàn)一系列問(wèn)題。

4.自己的項(xiàng)目中出現(xiàn)的問(wèn)題

4.1可以訪問(wèn)swagger -ui但是無(wú)法訪問(wèn)doc.html

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

當(dāng)時(shí)我也不知道怎么回事,在想,為什么不可以顯示?為什么swagger-ui可以使用?為什么demo可以使用?程序員的三連懵逼。。。最后在瀏覽了大量的博客后,發(fā)現(xiàn)是自己腦子抽了。

首先,要知道,這些資源在哪里,他們?cè)趉nife4j的jar包中,包你雖然導(dǎo)入了,但是資源你不告訴spring boot,這讓它怎么找?找空氣嗎?其次,swagger-ui可以可以使用,是因?yàn)樵趛ml文件中配置了,doc沒(méi)有配置,也沒(méi)有配置方法,demo可以使用,而項(xiàng)目中的不可以使用,是因?yàn)閟pringboot版本太高,有時(shí)找不到資源,需要你手動(dòng)告訴它,也就回到問(wèn)題1了。

對(duì)應(yīng)的資源如下:knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

4.1.1解決方法

在WebConfig配置類中實(shí)現(xiàn)WebMvcConfigurer接口,重寫addResourceHandlers方法,導(dǎo)入資源的位置。

@Component
public class WebConfig implements WebMvcConfigurer {

 /**
     * 靜態(tài)資源映射
     *
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
     registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
     registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}

如此,資源便讓springboot找到了,當(dāng)然,如果配置了攔截器,則需要忽略一些資源,可以在WebMvcConfigurer接口中實(shí)現(xiàn)addInterceptors方法,在內(nèi)部用addInterceptor定義自己的攔截器,用addPathPatterns添加攔截路徑和excludePatterns添加忽略路徑,我的忽略路徑如下

"/v3/api-docs/**", "/doc.html", "/webjars/**", "/swagger-resources", "/swagger-ui/**"

若不知道要忽略的具體資源,可以直接在瀏覽器的? ?網(wǎng)絡(luò)? 中,采用Shift+f5的方式,哪些請(qǐng)求報(bào)錯(cuò),就忽略哪些資源。這樣,doc.html便可以訪問(wèn)了。

4.2關(guān)于在doc.html找不到圖標(biāo)的問(wèn)題

這個(gè)問(wèn)題說(shuō)大嘛也不大,但是看著瀏覽器報(bào)錯(cuò)也不是很喜歡,在網(wǎng)上查閱了資料后,發(fā)現(xiàn)可能是圖標(biāo)侵權(quán)了,然后后面不讓用了。

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

4.2.1解決方法

自行在靜態(tài)資源文件夾下放一張favicon.ico的圖片,喜歡什么就放什么,但是后綴名要相同。一定要ico的文件。從網(wǎng)上下載一張喜歡的,后綴名自己改好。

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

放入后,并沒(méi)有萬(wàn)事大吉了,還要讓spring boot知道這個(gè)圖標(biāo),不然還是無(wú)法訪問(wèn),同樣需要添加靜態(tài)資源映射。在4.1.1方法里面添加

registry.addResourceHandler("favicon.ico").addResourceLocations("classpath:/static/");

同時(shí)在忽略路徑里面添加 /favicon.ico, 也就是放行這張圖,讓瀏覽器可以找到。

最后解決完成。撒花。

開(kāi)玩笑啦。

5.在實(shí)體類和控制層的簡(jiǎn)單運(yùn)用。

5.1實(shí)體類

直接上代碼,好吧。

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Schema
@Data
public class User {
    //id
    @Schema(name = "id",description = "序列號(hào)",defaultValue = "1",example = "1")
    private Integer id;
    //用戶名
    @Schema(name = "username",description = "用戶名",defaultValue = "not null",example = "admin")
    private String username;
    //密碼
    @Schema(name = "password",description = "密碼",defaultValue = "not null",example = "******")
    private String password;
    //權(quán)限id
    @Schema(name = "roleId",description = "權(quán)限id,判斷是否擁有此權(quán)限",defaultValue = "not null",example = "admin")
    private Integer roleId;
    //是否默認(rèn)
    @Schema(name = "is_default",description = "0為默認(rèn)用戶,1為普通用戶",defaultValue = "1",example = "1")
    private Integer is_default;
    //權(quán)限
    @Schema(hidden = true)
    private Role role;
    //token
    @Schema(name = "token",description = "存儲(chǔ)前端的token",defaultValue = "not null",example = "dsafasdff341234123...")
    private String token;
}

@Schema注解用于描述類的屬性,description為描敘,defaultValue為默認(rèn)值,example為舉例子,hidden為忽略。

5.2控制層

import com.pjx.sys.service.UploadService;
import com.pjx.sys.util.R;
import com.pjx.sys.util.SYSCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileNotFoundException;

@Tag(name = "上傳圖片")
@RestController
@RequestMapping("/adminapi/upload")
public class UploadController {

    //導(dǎo)入U(xiǎn)ploadService
    @Resource
    private UploadService uploadService;

    @Operation(method = "POST", summary = "更新背景圖", description = "通過(guò)傳入指定規(guī)格的圖片,更新實(shí)驗(yàn)室的背景圖")
    @PostMapping
    public R uploadBg(@Parameter(description = "圖片對(duì)象") @RequestParam("file") MultipartFile file) {
        try {
            uploadService.uploadBg(file);
            return new R(SYSCode.CODE_SUCCESS, "上傳成功");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return new R(SYSCode.CODE_ERROR, "上傳失敗");
    }
}

@Tag用于對(duì)API接口進(jìn)行標(biāo)記和分組。

@Operation用于對(duì)API接口方法進(jìn)行詳細(xì)的操作描述,method為方法,summary為簡(jiǎn)介,description為描敘。

@Parameter用于指定操作的參數(shù)列表。

其他的方法不全,暫時(shí)如下:

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java

knife4j-openapi3-jakarta-spring-boot-starter,springboot,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-766694.html

到了這里,關(guān)于springboot3.0.11-SNAPSHOT使用knife4j-openapi3所遇見(jiàn)的問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Linux-0.11 boot目錄head.s詳解

    Linux-0.11 boot目錄head.s詳解

    在head.s中,操作系統(tǒng)主要做了如下幾件事: 重新設(shè)置中斷描述符和全局描述符 檢查A20地址線是否開(kāi)啟 檢查數(shù)學(xué)協(xié)處理器 初始化頁(yè)表并開(kāi)啟分頁(yè) 跳轉(zhuǎn)到main函數(shù)執(zhí)行 重新設(shè)置IDT和GDT 在setup.s中我們已經(jīng)設(shè)置過(guò)了IDT和GDT, 為什么還要再設(shè)置一遍? 因?yàn)閟etup.s中設(shè)置的IDT和GDT后面

    2024年02月06日
    瀏覽(23)
  • springboot3使用swagger文檔

    springboot3使用swagger文檔

    在pom.xml里面引入如下倆個(gè)依賴 然后啟動(dòng)項(xiàng)目,打開(kāi)瀏覽器訪問(wèn)?http://localhost:8080/swagger-ui.html 就可以看到生成的文檔了? 最后附上swagger2到open api的注解變化 ? ?

    2024年02月13日
    瀏覽(24)
  • 【公告】BSV節(jié)點(diǎn)軟件發(fā)布最新升級(jí)版本v1.0.11

    【公告】BSV節(jié)點(diǎn)軟件發(fā)布最新升級(jí)版本v1.0.11

    發(fā)表時(shí)間:2022年4月21日 信息來(lái)源:bitcoinsv.io 本次新發(fā)布的v1.0.11是基于v1.0.10版的推薦升級(jí)版本,對(duì)交易費(fèi)的配置選項(xiàng)進(jìn)行了一些更改,并修復(fù)了一些錯(cuò)誤。? 本次發(fā)布的軟件里,相較此前版本的變更內(nèi)容具體如下: 對(duì)以下配置選項(xiàng)進(jìn)行了更名 ?-blockmintxfee 默認(rèn)禁用 Bloom 過(guò)濾

    2023年04月08日
    瀏覽(48)
  • Linux-0.11 kernel目錄進(jìn)程管理asm.s詳解

    Linux-0.11 kernel目錄進(jìn)程管理asm.s詳解

    該模塊和CPU異常處理相關(guān),在代碼結(jié)構(gòu)上asm.s和traps.c強(qiáng)相關(guān)。 CPU探測(cè)到異常時(shí),主要分為兩種處理方式,一種是有錯(cuò)誤碼,另一種是沒(méi)有錯(cuò)誤碼,對(duì)應(yīng)的方法就是 error_code 和 no_error_code 。在下面的函數(shù)詳解中,將主要以兩個(gè)函數(shù)展開(kāi)。 no_error_code 對(duì)于一些異常而言,CPU在出現(xiàn)

    2024年02月07日
    瀏覽(20)
  • Linux-0.11 文件系統(tǒng)file_dev.c詳解

    該文件主要提供了普通文件的讀寫方法 file_read 和 file_write ,這兩個(gè)函數(shù)在系統(tǒng)調(diào)用_sys_read和sys_write中被調(diào)用。 file_read 該函數(shù)是文件讀的函數(shù)。 首先定義了一些參數(shù),這里不做介紹,下面用到時(shí),再詳解。 接著進(jìn)行參數(shù)的校驗(yàn), 如果入?yún)ount等于0, 代表不讀任何數(shù)據(jù),則

    2024年02月07日
    瀏覽(23)
  • Linux-0.11 文件系統(tǒng)read_write.c詳解

    該模塊實(shí)現(xiàn)了文件系統(tǒng)通用的讀寫的方法read/write/lseek。 根據(jù)文件類型的不同,在內(nèi)部將調(diào)用不同的方法。如果是管道文件,則調(diào)用pipe.c中的讀寫方法,如果是字符設(shè)備,則會(huì)調(diào)用char_dev.c中的方法,如果是目錄或者普通文件,將調(diào)用file_dev.c中的讀寫方法,如果是塊設(shè)備文件,

    2024年02月06日
    瀏覽(25)
  • 【SpringBoot3】使用 devtools 實(shí)現(xiàn)代碼熱部署

    Spring Boot DevTools是一組用于提高開(kāi)發(fā)人員生產(chǎn)力,并加速Spring Boot應(yīng)用程序開(kāi)發(fā)的工具。它提供了一些功能,可以幫助開(kāi)發(fā)人員更快速地構(gòu)建應(yīng)用程序,并減少常見(jiàn)的開(kāi)發(fā)問(wèn)題。 Spring Boot DevTools的主要作用包括: 自動(dòng)重新加載 :當(dāng)應(yīng)用程序中的代碼發(fā)生變化時(shí),DevTools會(huì)自動(dòng)

    2024年01月16日
    瀏覽(17)
  • SpringBoot3.0 整合 ElasticSearch8.5.0 及使用

    這兩個(gè)版本都是目前較新的版本,本文選用的依賴是 spring-boot-starter-data-elasticsearch:3.0 ,這個(gè)新版本也是改用了es的 elasticsearch-java API,全面推薦使用Lambda語(yǔ)法;另外SpringData本身推出了 Repository 功能(有些類似Mybatis-Plus)的功能,也支持注解簡(jiǎn)化開(kāi)發(fā)。 Docker 快速部署 單機(jī) ela

    2024年02月11日
    瀏覽(22)
  • 阿里巴巴開(kāi)源Chat2DB v1.0.11 初體驗(yàn)

    阿里巴巴開(kāi)源Chat2DB v1.0.11 初體驗(yàn)

    作為一名阿里巴巴開(kāi)源項(xiàng)目的擁護(hù)者,從Chat2DB開(kāi)源至今都有關(guān)注這個(gè)開(kāi)源項(xiàng)目,因?yàn)橹暗陌姹具€存在較多BUG,暫時(shí)就沒(méi)有分享,目前升級(jí)到 v1.0.11 版本后,我來(lái)談?wù)勎覀€(gè)人的一個(gè)使用感受 Chat2DB 是一款有開(kāi)源免費(fèi)的多數(shù)據(jù)庫(kù)客戶端工具,支持windows、mac本地安裝,也支持服

    2024年02月09日
    瀏覽(24)
  • Springboot3.2.0使用RequestContextHolder獲取HttpServletRequest為NULL

    Springboot3.2.0使用RequestContextHolder獲取HttpServletRequest為NULL

    在之前的版本中一般為了能在任意地方都能獲取到HttpServletRequest我們一般都會(huì)自己封裝工具類從 RequestContextHolder 中獲取到 但是在新版的SpringBoot3.2.0版本中這種方式獲取到的 ServletRequestAttributes 是null,點(diǎn)擊進(jìn)去RequestContextHolder查看源代碼發(fā)現(xiàn)少了依賴 即使我在pom中加入的響應(yīng)

    2024年04月13日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包