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

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

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

前言

之前介紹了如何在 Spring Boot 中集成 Swagger2 和 Swagger3,對于我們日常的接口管理已經夠用了。但是作為一個顏值黨,無論是 Swagger2 還是 Swagger3,都難以滿足我們的審美。而且 Swagger2 和 Swagger3 都已經好久沒更新了,更新還是比較慢的。

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

集成過程

創(chuàng)建 Spring Boot 項目

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

添加依賴

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

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

配置添加

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

這里其實和 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)以下的主界面。這里有我們之前在配置類中所設置的一些接口信息,此外,還對接口進行了統(tǒng)計。因為我們代碼中只寫了一個 POST 的請求,所以這里統(tǒng)計出只有一個 POST 請求。

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

點擊左側 調試 按鈕,我們就可以在 Knife4j 中測試我們的接口。

踩過的坑

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

空指針異常

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

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

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

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

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

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

請求路徑未找到

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

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

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

No mapping for GET /doc.html

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

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

其實很簡單,既然我們要保留 @EnableWebMvc,那我們去配置個規(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 應該就能正常訪問 Knife4j 文檔管理頁面了。

總結

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

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

相關文章

最新評論

建瓯市| 德令哈市| 雷山县| 乡城县| 祥云县| 灵璧县| 会宁县| 长子县| 广昌县| 界首市| 勃利县| 江源县| 永和县| 新河县| 勐海县| 沙雅县| 萨嘎县| 镇原县| 金川县| 贵州省| 平度市| 托克托县| 广昌县| 缙云县| 潜山县| 沧州市| 涞源县| 贡觉县| 屏南县| 新巴尔虎右旗| 古丈县| 勃利县| 清镇市| 涞源县| 商水县| 凤城市| 天等县| 土默特右旗| 临夏市| 桓台县| 忻城县|