首頁 > 軟體

SpringBoot Knife4j線上API檔案框架基本使用

2022-12-09 14:03:52

1.Knife4j線上API檔案基本使用

Knife4j是一款基於Swagger 2的線上API檔案框架。

使用Knife4j的基礎步驟:

  • 新增依賴
  • application.properties/application.yml中新增設定
  • 在專案中新增設定類

關於依賴項:

<!-- Knife4j Spring Boot:線上API -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.9</version>
</dependency>

注意:以上依賴項的版本是2.0.9,適用於Spring Boot 2.6以下(不含2.6)版本。

關於組態檔中的設定,主要是開啟此框架的增強模式(Knife4j定義的概念),需要新增:

knife4j.enable=true

關於設定類:

import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.EnableSwagger2WebMvc;
/**
 * Knife4j設定類
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Slf4j
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {
    /**
     * 【重要】指定Controller包路徑
     */
    private String basePackage = "cn.tedu.csmall.product.controller";
    /**
     * 分組名稱
     */
    private String groupName = "product";
    /**
     * 主機名
     */
    private String host = "http://java.tedu.cn";
    /**
     * 標題
     */
    private String title = "商城線上API檔案--商品管理";
    /**
     * 簡介
     */
    private String description = "商城線上API檔案--商品管理";
    /**
     * 服務條款URL
     */
    private String termsOfServiceUrl = "http://www.apache.org/licenses/LICENSE-2.0";
    /**
     * 聯絡人
     */
    private String contactName = "Java教學研發部";
    /**
     * 聯絡網址
     */
    private String contactUrl = "http://java.tedu.cn";
    /**
     * 聯絡郵箱
     */
    private String contactEmail = "java@tedu.cn";
    /**
     * 版本號
     */
    private String version = "1.0.0";
    @Autowired
    private OpenApiExtensionResolver openApiExtensionResolver;
    public Knife4jConfiguration() {
        log.debug("建立設定類物件:Knife4jConfiguration");
    }
    @Bean
    public Docket docket() {
        String groupName = "1.0.0";
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .host(host)
                .apiInfo(apiInfo())
                .groupName(groupName)
                .select()
                .apis(RequestHandlerSelectors.basePackage(basePackage))
                .paths(PathSelectors.any())
                .build()
                .extensions(openApiExtensionResolver.buildExtensions(groupName));
        return docket;
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(title)
                .description(description)
                .termsOfServiceUrl(termsOfServiceUrl)
                .contact(new Contact(contactName, contactUrl, contactEmail))
                .version(version)
                .build();
    }
}

注意:務必檢查以上設定類中的basePackage屬性的值,必須是當前專案中控制器類所在的包!

在專案中已經完成以上步驟後,啟動專案,開啟瀏覽器,通過http://localhost:8080/doc.html即可存取線上API檔案。

2.設定API檔案資訊

@Api:新增在控制器類上

  • 此註解的tags屬性,可設定模組名稱,可以在模組名稱中使用編號,例如:01. 品牌管理模組,最終將按照編號升序排列

@ApiOperation:新增在控制器類中處理請求的方法上

  • 此註解的value屬性,可設定業務名稱

@ApiOperationSupport:新增在控制器類中處理請求的方法上

  • 此註解的order屬性(int型別),可設定業務的排序序號,最終將升序排列

@ApiModelProperty:新增在POJO型別的屬性上

  • 此註解的value屬性,可設定引數名稱(說明)
  • 此註解的required屬性,可設定是否必須提交此引數
  • 此註解的example屬性,可設定此請求引數的範例值

@ApiImplicitParam:新增在控制器類中處理請求的方法上,用於對未封裝的請求引數新增說明(例如Long id引數)

  • 必須設定此註解的name屬性,取值為方法的引數名稱,表示當前註解對哪個引數進行說明
  • 此註解的value屬性,可設定引數名稱(說明)
  • 此註解的required屬性,可設定是否必須提交此引數
  • 此註解的dataType屬性,可設定引數的資料型別(例如取值為"long"
  • 此註解的example屬性,可設定此請求引數的範例值

@ApiImplicitParams:新增在控制器類中處理請求的方法上,此註解的value屬性是@ApiImplicitParam註解的陣列型別,當需要使用@ApiImplicitParam對多個未封裝引數進行說明時,需要將多個@ApiImplicitParam註解的設定作為當前註解的引數

@ApiOperation("刪除類別")
@ApiOperationSupport(order = 200)
@ApiImplicitParams({
    @ApiImplicitParam(name = "id", value = "類別ID", required = true, dataType = "long"),
    @ApiImplicitParam(name = "userId", value = "使用者ID", required = true, dataType = "long")
})
@PostMapping("/delete")
public void delete(Long userId, Long id) {}

到此這篇關於SpringBoot Knife4j線上API檔案框架基本使用的文章就介紹到這了,更多相關SpringBoot Knife4j 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com