欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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 進(jìn)行了增強(qiáng),增加兩個越來越多的個性化需求,可以說兼具顏值與實力了。今天我們就來看看,如何在 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è)置的一些接口信息,此外,還對接口進(jìn)行了統(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é)

文章主要講了下如何集成并且進(jìn)行一個最簡單的接口調(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接口,使用圖靈機(jī)器人平臺接口實現(xiàn)天氣預(yù)報,非常簡單實用,這里推薦給大家。
    2015-03-03
  • Mybatis一對多與多對一查詢處理詳解

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

    這篇文章主要給大家介紹了關(guān)于Mybatis一對多與多對一查詢處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(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)登錄互踢的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • SpringCloud FeignClient 超時設(shè)置

    SpringCloud FeignClient 超時設(shè)置

    FeignClient?默認(rèn)的超時時間可能不滿足你的需求,你可以通過幾種方式來自定義這些超時設(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)跳表作了非常詳細(xì)的圖文解說及代碼示例,對正在學(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)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • MyEclipse10安裝Log4E插件

    MyEclipse10安裝Log4E插件

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

最新評論