knife4j是為Java MVC框架集成Swagger生成Api文檔的增強解決方案

knife4j

knife4j是為Java MVC框架集成Swagger生成Api文檔的增強解決方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一樣小巧,輕量,并且功能強悍!

knife4j的前身是swagger-bootstrap-ui,為了契合微服務的架構發展,由于原來swagger-bootstrap-ui采用的是后端Java代碼+前端Ui混合打包的方式,在微服務架構下顯的很臃腫,因此項目正式更名為knife4j。

目前項目主要的模塊如下:

此示例根據官方文檔介紹演示。

核心功能

該UI增強包主要包括兩大核心功能:文檔說明 和 在線調試

  • 文檔說明:根據Swagger的規范說明,詳細列出接口文檔的說明,包括接口地址、類型、請求示例、請求參數、響應示例、響應參數、響應碼等信息,使用swagger-bootstrap-ui能根據該文檔說明,對該接口的使用情況一目了然。

  • 在線調試:提供在線接口聯調的強大功能,自動解析當前接口參數,同時包含表單驗證,調用參數可返回接口響應內容、headers、Curl請求命令實例、響應時間、響應狀態碼等信息,幫助開發者在線調試,而不必通過其他測試工具測試接口是否正確,簡介、強大。

UI增強

同時,swagger-bootstrap-ui在滿足以上功能的同時,還提供了文檔的增強功能,這些功能是官方swagger-ui所沒有的,每一個增強的功能都是貼合實際,考慮到開發者的實際開發需要,是比不可少的功能,主要包括:

  • 個性化配置:通過個性化ui配置項,可自定義UI的相關顯示信息

  • 離線文檔:根據標準規范,生成的在線markdown離線文檔,開發者可以進行拷貝生成markdown接口文檔,通過其他第三方markdown轉換工具轉換成html或pdf,這樣也可以放棄swagger2markdown組件

  • 接口排序:自1.8.5后,ui支持了接口排序功能,例如一個注冊功能主要包含了多個步驟,可以根據swagger-bootstrap-ui提供的接口排序規則實現接口的排序,step化接口操作,方便其他開發者進行接口對接

快速開始

相信使用過springboot的人大都知道和用過swagger,knife4j的使用方法和swagger幾乎一模一樣,沒有什么學習成本,不同的是展示的接口UI文檔更加友好和人性化。下面開始演示一個集成項目,首先來看pom文件依賴:

只引入一個knife4j的starter即可,不用其它依賴。springboot的配置文件和啟動類不用做任何特殊配置,使用knife4j需要一個swagger的配置類,這個配置類和以前使用swagger幾乎是一樣的:

可以看到,內容上沒什么變化,唯一的變化是類注解需要比原來的swagger多加一個 @EnableSwaggerBootstrapUi。這樣knife4j的所有配置都完成了

軟件版本增強注解說明
knife4j<=2.0.0@EnableSwaggerBootstrapUi?
knife4j>=2.0.1@EnableKnife4j后續版本不會再更改

啟動項目可以訪問地址:

  • http://localhost:8080/doc.html?plus=1

來看一下效果:

配置簡單接口

下面來配置一個簡單的接口,查看文檔的展示效果。首先來看接口的通用返回結果模型定義:

注意要在文檔上面展示,需要使用圖中的注解。這個通用結果的具體數據是一個泛型類型。下面我們定義一個具體的業務數據模型:

通過上面兩個的定義,接口的返回類型就搞定了,下面來看接口:

這個接口類中分為幾個部分需要注意,第一是類上面的@Api注解,描述了整個類的接口分類含義。還有一個是每個接口上面的 @ApiImplicitParams 注解,定義了接口的所有參數。還有@ApiResponses注解,定義了返回時,所有狀態碼所代表的的含義,最后是@ApiOperation注解,描述了單個接口本身的功能。

定義接口完成后,我們來重啟項目,查看文檔的效果:

首頁上面有一些變化,左側列表多了HelloController類的整體描述欄目,我們點開這個欄目,可以看到類中定義的所有接口:

點擊這個接口,看到右側非常詳細的接口文檔:

上圖中展示的是接口地址,接口類型,接口描述和詳細的入參描述,下面的相應狀態展示了我們定義的兩種狀態類型,還有接口的回參也非常詳細的列了出來:

文字描述類型,數據結構,類型都有,還有響應示例,可以說非常清晰了。個人認為這種展示效果比原來的swagger要友好很多。

右側還有調試功能,可以直接使用來測試接口:

在左側的文檔管理中,還可以設置全局參數,支持類似jwt的帶權限的測試:

對文檔還可以進行個性化設置:

說明

上面簡單介紹和演示了knife4j,這個starter不僅支持swagger-bootstrap-ui,原始的swagger-ui還是可以使用的:

有些更加喜歡原始風格的同學可以看這個頁面。另外,swagger有很多注解,可以使文檔展示的信息更加完善和友好,大家可以自行嘗試和學習。

坑處:
有個比較坑的地方,可能guava的版本是2.0以下會報錯com.google.common.collect.FluentIterable.concat(Ljava/lang/Iterable;Ljava/lang/Iterable;)Lcom/google

,解決方法是引入高版本

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version>
</dependency>

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386638.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386638.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

調試與對拍(一):生成測試數據+對拍

今天打比賽時令小編很氣憤&#xff0c;隔壁LSH有文件運行錯誤&#xff0c;重提了一遍老師就收&#xff0c;而小編重提卻愛搭不理&#xff0c;于是小編決定還是自己造個數據把代碼重測一遍&#xff0c;于是潛心鉆研生成測試數據的方法。 其實很簡單&#xff0c;用隨機數生成器生…

真香定律!一文帶你搞懂Android多線程Handler,成功入職騰訊

Google 為了幫助 Android 開發者更快更好地開發 App&#xff0c;推出了一系列組件&#xff0c;這些組件被打包成了一個整體&#xff0c;稱作 Android Jetpack&#xff0c;它包含的組件如下圖所示&#xff1a; 老的 support 包被整合進了 Jetpack&#xff0c;例如上圖 Foundatio…

Docker安裝influxDB

1. 在Docker庫中查找influxDB鏡像 docker search influxdb # 在Docker庫中查找influxDB鏡像文件 從Docker庫中拉取influxDB鏡像 docker pull influxdb # 從docker庫中拉取influxDB鏡像&#xff0c;默認拉取最新版本 docker images …

(二十)python 3 匿名函數

匿名函數lambda Python使用lambda關鍵字創造匿名函數。所謂匿名&#xff0c;意即不再使用def語句這樣標準的形式定義一個函數。這種語句的目的是由于性能的原因&#xff0c;在調用時繞過函數的棧分配。其語法是&#xff1a; lambda [arg1[, arg2, ... argN]]: expression 其中&…

docker中啟動關閉刪除所有的容器命令

docker中 重啟啟動所有的容器命令 docker restart $(docker ps -a | awk { print $1} | tail -n 2)docker中 啟動所有的容器命令 docker start $(docker ps -a | awk { print $1} | tail -n 2)docker中 關閉所有的容器命令 docker stop $(docker ps -a | awk { print $1} | …

真香警告!2021Android高級面試題,揮淚整理面經

前言 這是“拔劍金九銀十”的第二篇文章&#xff0c;本文主要針對3年以上的Android開發者進階面試中高級開發工程師而整理。 希望可以對你們有所幫助。不多廢話&#xff0c;進入正題。 目錄&#xff1a; Java中高級 計算機網絡 Android高級面試—性能優化 Android優秀第三方…

51nod1584加權約數和

題目大意&#xff1a; 求:\[ \sum_{i-1}^n\sum_{j1}^nmax(i,j)\sigma(i*j) \] 題解 對于這個\(\max\)&#xff0c;套路的把它轉化成&#xff1a;\[ 2*\sum_{i1}^n\sum_{j1}^ii*\sigma(i*j)-\sum_{i1}^n i*\sigma(i*i) \] 對于前面的部分&#xff0c;我們可以&#xff1a;\[ \su…

冗余的阿里云實例開啟和停止API

停止使用的API URL:https://api.aliyun.com/?spm5176.12818093.resource-links.dapi_platform.488716d0OrHCwQ#/?productEcs&version2014-05-26&apiStopInstance&tabDEMO&langJAVA 啟動實例&#xff1a; URL:https://api.aliyun.com/?spm5176.12818093.re…

知乎大V推薦!面試官6個靈魂拷問,原理+實戰+視頻+源碼

概述 想了很久怎么樣可以讓文章的標題不那么悲觀&#xff0c;但是各種文案都在我腦海里面不斷的被否定&#xff0c;要么是不那么抓眼球&#xff0c;要么是立意不匹配。最后想了想&#xff0c;這個標題是真的符合我最近的感悟。 希望看過文章&#xff0c;能有同感的朋友也能多…

Codeforces Round #499 (Div. 1) Solution

Codeforces Round #499 (Div. 1) Solution https://codeforces.com/contest/1010 為啥我\(\rm Div.1\)能\(A4\)題還是\(\rm specialist....\) A. Fly 二分答案&#xff0c;送分題。 #include<bits/stdc.h> using namespace std;void read(int &x) {x0;int f1;char ch…

Windows10家庭版安裝Docker Desktop(非Docker Toolbox)

現在大部分筆記本預裝的都是win10家庭版&#xff0c;而家庭版又不支持Hyper-V&#xff0c;Docker Desktop是無法直接安裝的。但其實家庭版是可以通過腳本開啟Hyper-V來安裝Docker Desktop的。下面就教大家如何操作。 開啟Hyper-V 添加方法非常簡單&#xff0c;把以下內容保存…

阿里P7手把手教你!阿里P7級別面試經驗總結,搞懂這些直接來阿里入職

什么是中年危機 根據權威數據顯示&#xff0c;國內IT程序員鼎盛時期是在25-27歲左右&#xff0c;30歲對于程序員而言完全是一個38線&#xff0c;接著就是轉業轉崗的事情&#xff0c;這一點在業界也算是一個共識了。 大學畢業步入IT行業普遍年齡也是在22歲左右&#xff0c;然而…

自適應閾值化操作:adaptiveThreshold()函數

在圖像閾值化操作中&#xff0c;更關注的是從二值化圖像中&#xff0c;分離目標區域和背景區域&#xff0c;但是僅僅通過設定固定閾值很難達到理想的分割效果。而自適應閾值&#xff0c;則是根據像素的鄰域塊的像素值分布來確定該像素位置上的二值化閾值。這樣做的好處&#xf…

阿里P8親自教你!Activity的6大難點,你會幾個?年薪50W

前言 網上有很多對程序員簡歷的一些指導&#xff0c;這里就不重述&#xff0c;大家可以搜下網上其他大神的總結&#xff0c;結合自身情況修改下。我有幾點建議&#xff1a; 1.盡量不要花哨&#xff0c;程序員和設計師或者產品運營還不一樣&#xff0c;我們的簡歷成功與否決定…

為什么選用NACOS

Nacos Nacos 致力于幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集&#xff0c;幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。 Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如…

Qt樣式表之一:Qt樣式表和盒子模型介紹

一、Qt樣式表介紹 Qt樣式表是一個可以自定義部件外觀的十分強大的機制&#xff0c;可以用來美化部件。Qt樣式表的概念、術語和語法都受到了HTML的層疊樣式表&#xff08;Cascading Style Sheets, CSS)的啟發&#xff0c;不過與CSS不同的是&#xff0c;Qt樣式表應用于部件的世界…

阿里P8大佬親自教你!Android內存泄漏總結,看看這篇文章吧!

前言 這次去騰訊面試的是我大學同學&#xff0c;我們大學都是一學習&#xff0c;一起吃飯&#xff0c;一起洗腳&#xff0c;一起。。。 他們公司最近也裁員了&#xff0c;不過他是裁員前去的騰訊&#xff0c;不知道誰撈到他簡歷了&#xff0c;莫名就走了流程&#xff0c;他莫…

Sentinel在訂單大量服務調用的應用場景

Sentinel譯為“哨兵”&#xff0c;顧名思義&#xff0c;面對您后臺的大量服務/微服務&#xff0c;前置一個哨兵&#xff0c;但面對大量請求時&#xff0c;讓后臺服務有序被調用&#xff0c;但某些服務的不可用時&#xff0c;采用服務熔斷降級等措施&#xff0c;讓系統仍能平穩運…

leetcode 214 Shortest Palindrome

lc214 Shortest Palindrome 可以將問題轉化成找到原字符串的最長palindrome子串&#xff08;注意&#xff0c;子串必須以s[0]為起始&#xff09; 例如&#xff1a;sdserf sds為最長palindrome子串 只需要將sds之后的子串翻轉一下&#xff0c;補充到原字符串之前即可 fre sdser…

程序員深度學習!我想談談關于Android面試那些事,附贈課程+題庫

想要成為一名優秀的Android開發&#xff0c;你需要一份完備的知識體系&#xff0c;在這里&#xff0c;讓我們一起成長為自己所想的那樣~。 25%的面試官會在頭5分鐘內決定面試的結果60%的面試官會在頭15分鐘內決定面試的結果 一般來說&#xff0c;一場單面的時間在30分鐘左右&…