亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring?Boot?集成接口管理工具?Knife4j

 更新時間:2022年05月23日 09:58:32   作者:??村雨遙????  
這篇文章主要介紹了Spring?Boot?集成接口管理工具?Knife4j,首先通過創(chuàng)建一個?Spring?Boot?項目展開主題,需要的小伙伴可以參考一下

前言

之前介紹了如何在 Spring Boot 中集成 Swagger2 和 Swagger3,對于我們?nèi)粘5慕涌诠芾硪呀?jīng)夠用了。但是作為一個顏值黨,無論是 Swagger2 還是 Swagger3,都難以滿足我們的審美。而且 Swagger2 和 Swagger3 都已經(jīng)好久沒更新了,更新還是比較慢的。

偶然之間發(fā)現(xiàn)了一個國產(chǎn)的接口文檔管理工具 Knife4j,它基于 Swagger 而來,但是又對 Swagger 進行了增強,增加兩個越來越多的個性化需求,可以說兼具顏值與實力了。今天我們就來看看,如何在 Spring Boot 中集成 Knife4j 這個接口文檔管理工具。

集成過程

創(chuàng)建 Spring Boot 項目

既然要在 Spring Boot 中使用 Knife4j,那首先就得創(chuàng)建一個 Spring Boot 項目。當(dāng)然,我在之前已經(jīng)寫過文章介紹如何創(chuàng)建 Spring Boot 項目了,所以這里不再贅述。如果你還對 Spring Boot 創(chuàng)建方式不太熟悉,可以參考我之前的文章:Spring Boot 教程之創(chuàng)建項目的三種方式

添加依賴

既然是用 Maven 來管理項目依賴,那我們在項目 pom.xml 中引入 Knife4j 的相關(guān)依賴包,引入代碼如下。

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

配置添加

接著在項目中創(chuàng)建一個配置包 config,用于配置 Swagger 的配置依賴。在這里可以配置掃描的 controller 所在的包,設(shè)置接口文檔的標(biāo)題、描述、作者信息等。

這里其實和 Swagger2 和 Swagger3 很相似,Swagger 也是可以通過配置類來指定這些信息。

package com.cunyu.springbootknife4jdemo.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Knife4jConfiguration {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .apiInfo(apiInfo())
                .select()                .apis(RequestHandlerSelectors.basePackage("com.cunyu.springbootknife4jdemo.controller"))
                .paths(PathSelectors.any())
                .build();

    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .description("Kinfe4j 集成測試文檔")
                .contact(new Contact())
                .version("v1.1.0")
                .title("API測試文檔")
                .build();
    }
}

編寫 Controller 層

接著我們編寫一個測試的 controller,用于在 Knife4j 中展示用,代碼如下。

@Api(tags = "測試模塊")
@RestController
public class DemoController {
    @ApiImplicitParam(name = "name", value = "姓名", required = true)
    @ApiOperation(value = "入門程序,Hello World")
    @PostMapping("/helloWorld")
    public ResponseEntity<String> helloWorld(@RequestParam(value = "name") String name) {
        return ResponseEntity.ok("Hello World," + name);
    }
}

啟動測試

然后將項目啟動起來,接著到瀏覽器中去打開 http://localhost:8080/doc.html,就會出現(xiàn)以下的主界面。這里有我們之前在配置類中所設(shè)置的一些接口信息,此外,還對接口進行了統(tǒng)計。因為我們代碼中只寫了一個 POST 的請求,所以這里統(tǒng)計出只有一個 POST 請求。

打開具體接口,這里就有我們接口的請求和響應(yīng)的一些情況說明。

點擊左側(cè) 調(diào)試 按鈕,我們就可以在 Knife4j 中測試我們的接口。

踩過的坑

當(dāng)然,如果你按照以上步驟順利打開了 Knife4j 的文檔管理頁面,那接下來的內(nèi)容你大可不必了解。但如果你按照上邊步驟搭建過程中也出現(xiàn)了問題,那不妨看看以下是否有你遇到的 Bug。

空指針異常

首先是報空指針異常,報錯信息如下。

Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

經(jīng)過查詢資料可知,這是因為 Springfox 使用的路徑匹配是基于 AntPathMatcher 的,但是由于我使用的是 Spring Boot 2.6.x 版本,正好這個版本使用的是 PathPatternMatcher,所以才會出現(xiàn)這個問題。所以這里主要可以通過兩種方式來解決。

第一種,無可厚非,就是將我們的 Spring Boot 的版本降低,從 2.6.x 降到 2.5.x,此時就應(yīng)該是可以了,這里可以自己去試一下。

第二種,既然我們都已經(jīng)用上 2.6.x 版本了,那我們就是不想降低版本咋整。此時,我們只需要在主程序啟動類中加上 @EnableWebMvc 這個注解。然后再次啟動程序,你就會發(fā)現(xiàn)啟動成功了!

@EnableWebMvc
@SpringBootApplication
public class SpringbootKnife4jDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootKnife4jDemoApplication.class, args);
    }
}

請求路徑未找到

一山放過一山攔,以為翻過了上面的山,就能成功了。沒想到出師不利,這不又遇到了報錯請求路徑未找到。

當(dāng)我們成功啟動項目后,在瀏覽器中打開 http://localhost:8080/doc.html,卻沒想到迎接我們的不是成功界面,而是下面的 Whitelabel Error Page。

然后到 IDEA 中一看日志,程序照常運行,也沒報錯,但是給我們拋出了一個 WARN,警告信息如下:

No mapping for GET /doc.html

這是因為我們?yōu)榱私鉀Q上面的 Bug 而使用到了 @EnableWebMvc,由于它實現(xiàn)了 WebMvcConfigurer 接口,所以會導(dǎo)致我們訪問識別。

這時候問題就來了,上面又需要這個注解,但是下面這個問題又不需要,那該怎么辦呢?

其實很簡單,既然我們要保留 @EnableWebMvc,那我們?nèi)ヅ渲脗€規(guī)則不就好了。

在項目的 config 包下,我們新建一個配置類 WebMvcConfigurer 記成 WebMvcConfigurationSupport 類,接著將 dom.html 過濾掉即可。

@Configuration
public class WebMvcConfigurer extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }
}

完成上述配置后,再去運行項目,再到瀏覽器中去訪問 http://localhost:8080/doc.html 應(yīng)該就能正常訪問 Knife4j 文檔管理頁面了。

總結(jié)

文章主要講了下如何集成并且進行一個最簡單的接口調(diào)試,此外,對于文中集成是所遇到的 Bug,如果你沒有遇到,那么你應(yīng)該順利集成了

到此這篇關(guān)于Spring Boot 集成接口管理工具 Knife4j的文章就介紹到這了,更多相關(guān)Spring Boot 集成 Knife4j內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入解析Java編程中的StringBuffer與StringBuider

    深入解析Java編程中的StringBuffer與StringBuider

    這篇文章主要介紹了Java編程中的StringBuffer與StringBuider,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • 智能手表開發(fā)API接口

    智能手表開發(fā)API接口

    這篇文章主要介紹了智能手表開發(fā)API接口,使用圖靈機器人平臺接口實現(xiàn)天氣預(yù)報,非常簡單實用,這里推薦給大家。
    2015-03-03
  • Mybatis一對多與多對一查詢處理詳解

    Mybatis一對多與多對一查詢處理詳解

    這篇文章主要給大家介紹了關(guān)于Mybatis一對多與多對一查詢處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Spring Security OAuth2 實現(xiàn)登錄互踢的示例代碼

    Spring Security OAuth2 實現(xiàn)登錄互踢的示例代碼

    這篇文章主要介紹了Spring Security OAuth2實現(xiàn)登錄互踢的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • SpringCloud FeignClient 超時設(shè)置

    SpringCloud FeignClient 超時設(shè)置

    FeignClient?默認的超時時間可能不滿足你的需求,你可以通過幾種方式來自定義這些超時設(shè)置,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Java的this關(guān)鍵字的使用與方法的重載相關(guān)知識

    Java的this關(guān)鍵字的使用與方法的重載相關(guān)知識

    這篇文章主要介紹了Java的this關(guān)鍵字的使用與方法的重載相關(guān)知識,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • Quarkus篇入門創(chuàng)建項目搭建debug環(huán)境

    Quarkus篇入門創(chuàng)建項目搭建debug環(huán)境

    這篇文章主要為大家介紹了Quarkus篇入門創(chuàng)建項目搭建debug環(huán)境,先來一套hello?world,來搭建基本的運行及調(diào)試環(huán)境吧
    2022-02-02
  • Java數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)跳表

    Java數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)跳表

    今天帶大家來學(xué)習(xí)Java數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,文中對用Java實現(xiàn)跳表作了非常詳細的圖文解說及代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Servlet連接數(shù)據(jù)庫實現(xiàn)用戶登錄的實現(xiàn)示例

    Servlet連接數(shù)據(jù)庫實現(xiàn)用戶登錄的實現(xiàn)示例

    本文主要介紹了Servlet連接數(shù)據(jù)庫實現(xiàn)用戶登錄的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • MyEclipse10安裝Log4E插件

    MyEclipse10安裝Log4E插件

    這篇文章主要介紹了MyEclipse10安裝Log4E插件的相關(guān)資料,需要的朋友可以參考下
    2017-10-10

最新評論