<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          再見 Swagger UI!國人開源了一款超好用的 API 文檔生成框架,Star 4.7K+,真香??!

          共 4817字,需瀏覽 10分鐘

           ·

          2021-11-19 08:14

          點擊關(guān)注公眾號,Java干貨及時送達(dá)

          背景

          最近,棧長發(fā)現(xiàn)某些國內(nèi)的開源項目都使用到了 Knife4j 技術(shù),看名字就覺得很鋒利啊!

          是不是這樣的縮寫呢:

          Knife4j = Knife for Java ?

          Java 匕首?

          看起來很牛逼的樣子,當(dāng)然,這是我簡單的猜測,從字面上并不能猜到它是干嘛用的!

          那么它究竟是一個什么樣的框架呢?

          Knife4j 簡介

          Knife4j 的前身是 ?swagger-bootstrap-ui,其實就是一個純 Swagger UI 的皮膚項目,用過 Swagger 的應(yīng)該都知道,Swagger UI 是不怎么好用的,并不太適合國人,所以 swagger-bootstrap-ui 項目就誕生了。

          swagger-bootstrap-ui 后面為了滿足許多個性化的需求,又加入了許多豐富的服務(wù)端特性,不再僅僅只是專注于前端 UI 皮膚了,所以又改名:knife4j

          取名 knife4j 是希望它能像一把匕首一樣小巧、輕量,并且功能強悍,更是希望它能成為 Swagger 接口文檔服務(wù)的通用性增強型解決方案。

          Knife4j 由國人程序員蕭明于 2017 年開源,到現(xiàn)在已經(jīng) 4 年多了,看了下 Star 數(shù)已經(jīng)超過 4.7k+ 了:

          Knife4j 還獲得了 GVP 項目稱號,即 Gitee 最有價值的開源項目,并且我發(fā)現(xiàn)現(xiàn)在越來越多的開源項目都在使用它,Swagger UI 可以扔掉了。。

          官網(wǎng)地址:

          https://doc.xiaominfo.com/knife4j/

          開源地址:

          https://gitee.com/xiaoym/knife4j

          Knife4j 界面賞鑒

          Knife4j 采用了 Vue + And Design Vue 組件進(jìn)行重寫,相關(guān)界面拿出來供大家賞鑒。

          接口文檔顯示界面:

          接口調(diào)試界面:

          Swagger Models 功能:

          支持導(dǎo)出離線 Markdown、Html:

          knife4j 果然非常強大,整個界面基于左右菜單式的布局方式,支持多標(biāo)簽同時打開展示、切換,文檔和調(diào)試也更清晰,感覺更符合國人的操作習(xí)慣吧。。

          Knife4j 實戰(zhàn)

          knife4j 目前主要支持以 Java 開發(fā)為主,并且支持 Spring MVC、Spring Boot、Spring Cloud 框架的集成使用。

          本文棧長就以 Spring Boot 為基礎(chǔ)實戰(zhàn)下吧:

          • Spring Boot 2.5.0
          • Knife4j 2.0.9
          • Maven 3.6.3
          • JDK 1.8

          注意: 使用 Knife4j 2.0.6+ 版本,Spring Boot 的版本要求 2.2.x+

          1、Knife4j 依賴引入

          <dependency>
          ????<groupId>com.github.xiaoymingroupId>
          ????<artifactId>knife4j-spring-boot-starterartifactId>
          ????<version>2.0.9version>
          dependency>

          2、Knife4j 配置

          開啟增強功能及基本的登錄認(rèn)證:

          knife4j:
          ??#?開啟增強
          ??enable:?true
          ??#?開啟登錄認(rèn)證
          ??basic:
          ????enable:?true
          ????username:?test
          ????password:?test

          支持個性化配置項,如接口地址、接口描述屬性、UI 增強等個性化配置功能:

          /**
          ?*?Knife4j?配置類
          ?*?來源微信公眾號:Java技術(shù)棧
          ?*?作者:棧長
          ?*/
          @Configuration
          @EnableSwagger2WebMvc
          public?class?Knife4jConfiguration?{

          ????@Bean(value?=?"defaultDocket")
          ????public?Docket?defaultDocket()?{
          ????????//?聯(lián)系人信息
          ????????Contact?contact?=?new?Contact("公眾號:Java技術(shù)棧",?"https://www.javastack.cn",?"[email protected]");

          ????????//?創(chuàng)建?Docket
          ????????Docket?docket?=?new?Docket(DocumentationType.SWAGGER_2)
          ????????????????.apiInfo(new?ApiInfoBuilder()
          ????????????????????????.title("Knife4j?測試")
          ????????????????????????.description("Knife4j?Test")
          ????????????????????????.termsOfServiceUrl("https://www.javastack.cn")
          ????????????????????????.contact(contact)
          ????????????????????????.version("1.0")
          ????????????????????????.build())
          ????????????????.groupName("1.x")
          ????????????????.select()
          ????????????????.apis(RequestHandlerSelectors.basePackage("cn.javastack.springboot.knife4j.api"))
          ????????????????.paths(PathSelectors.any())
          ????????????????.build();
          ????????return?docket;
          ????}

          }

          Spring Boot 基礎(chǔ)就不介紹了,送你一份《Spring ?Boot 學(xué)習(xí)筆記》,高清理論+實戰(zhàn)版,照著學(xué)習(xí),沒有不會的,最新版正在努力更新中,可以持續(xù)關(guān)注公眾號 Java技術(shù)棧,會第一時間分享給大家。

          3、新增測試接口

          新增兩個測試接口,一個登錄(POST),一個問好(GET)。

          /**
          ?*?Knife4j?測試接口
          ?*?來源微信公眾號:Java技術(shù)棧
          ?*?作者:棧長
          ?*/
          @Api(tags?=?"測試模塊")
          @RestController
          public?class?Knife4jController?{

          ????/**
          ?????*?Knife4j?測試接口問好
          ?????*?來源微信公眾號:Java技術(shù)棧
          ?????*?作者:棧長
          ?????*/
          ????@ApiImplicitParam(name?=?"name",?value?=?"名稱",?required?=?true)
          ????@ApiOperation(value?=?"公眾號Java技術(shù)棧向你問好!")
          ????@ApiOperationSupport(order?=?2,?author?=?"棧長")
          ????@GetMapping("/knife4j/hi")
          ????public?ResponseEntity?hello(@RequestParam(value?=?"name")?String?name)?{
          ????????return?ResponseEntity.ok("Hi:"?+?name);
          ????}

          ????/**
          ?????*?Knife4j?測試接口登錄
          ?????*?來源微信公眾號:Java技術(shù)棧
          ?????*?作者:棧長
          ?????*/
          ????@ApiImplicitParams({
          ????????????@ApiImplicitParam(name?=?"username",?value?=?"用戶名",?required?=?true),
          ????????????@ApiImplicitParam(name?=?"password",?value?=?"密碼",?required?=?true)
          ????})
          ????@ApiOperation(value?=?"接口登錄!")
          ????@ApiOperationSupport(order?=?1,?author?=?"棧長")
          ????@PostMapping("/knife4j/login")
          ????public?ResponseEntity?login(@RequestParam(value?=?"username")?String?username,
          ????????????????????????????????????????@RequestParam(value?=?"password")?String?password)?{
          ????????if?(StringUtils.isNotBlank(username)?&&?"javastack".equals(password))?{
          ????????????return?ResponseEntity.ok("登錄成功:"?+?username);
          ????????}
          ????????return?ResponseEntity.ok("用戶名或者密碼有誤:"?+?username);
          ????}

          }

          上面為了支持接口順序和接口作者,使用了 Knife4j 的 @ApiOperationSupport 注解,其他的均為 Swagger 自帶的注解,從該目錄下看還支持下面的注解:

          更多可去官網(wǎng)進(jìn)行學(xué)習(xí)。

          完整的 Demo 代碼就不一一帖了,本節(jié)教程所有實戰(zhàn)源碼已上傳到這個倉庫:

          https://github.com/javastacks/spring-boot-best-practice

          4、Knife4j 測試

          啟動應(yīng)用,打開 Knife4j 文檔頁:

          http://localhost:8080/doc.html

          登錄認(rèn)證
          主頁信息

          主頁會顯示一些已經(jīng)配置好的文檔參數(shù)及接口統(tǒng)計信息,并且在首頁模塊菜單中也看到了我們的測試模塊的兩個接口。

          接口文檔:

          登錄接口文檔
          問好接口文檔

          調(diào)試一下:

          登錄失敗
          登錄成功
          問好成功

          這里棧長使用了接口排序、還有接口作者功能,另外還支持分組排序、自定義文檔、Swagger 資源保護(hù)、導(dǎo)出 Markdown、參數(shù)緩存等眾多強大功能,增強功能多達(dá) 29 項,有興趣的可以自行嘗試...

          總結(jié)

          好了,今天棧長給大家介紹了國人程序員開源的一款 Knife4j 項目,也就是 Swagger 的增強版,毫無疑問要比 Swagger UI 更強大,更好用,也符合國人的習(xí)慣!

          如果你也在使用 Swagger,可以考慮使用 Knife4j,它不僅有更強大的 UI,更有多達(dá) 29 項的增強功能,它們并不是替代關(guān)系,就像 Mybatis Plus 和 Mybatis 的關(guān)系一樣,它能助你更進(jìn)一步提高開發(fā)生產(chǎn)力。

          如果你也在使用 Knife4j,歡迎留言分享哦!

          本節(jié)教程所有實戰(zhàn)源碼已上傳到這個倉庫:

          https://github.com/javastacks/spring-boot-best-practice

          好了,今天的分享就到這里了,后面棧長會分享更多好玩的 Java 技術(shù)和最新的技術(shù)資訊,關(guān)注公眾號Java技術(shù)棧第一時間推送,我也將主流 Java 面試題和參考答案都整理好了,在公眾號后臺回復(fù)關(guān)鍵字 "面試" 進(jìn)行刷題。

          最后,覺得我的文章對你用收獲的話,動動小手,給個在看、轉(zhuǎn)發(fā),原創(chuàng)不易,棧長需要你的鼓勵。

          版權(quán)聲明: 本文系公眾號 "Java技術(shù)棧" 原創(chuàng),原創(chuàng)實屬不易,轉(zhuǎn)載、引用本文內(nèi)容請注明出處,抄襲者一律舉報+投訴,并保留追究其法律責(zé)任的權(quán)利。





          關(guān)注Java技術(shù)??锤喔韶?/strong>



          獲取 Spring Boot 實戰(zhàn)筆記!
          瀏覽 23
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本艹逼 | 抽插亚洲 | 国产性爱无码 | 毛片18免费看 | 骚网站|