




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第SpringBoot中使用Knife4J的解決方案目錄一、引入依賴二、創建配置類三、常用注解3-1@Api3-1-1@Api注解的常用屬性,如下:3-1-2@Api注解的不常用屬性,如下:3-2@ApiOperation3-2-1@ApiOperation注解的常用屬性,如下:3-2-2@ApiOperation注解的不常用屬性,如下:3-3@ApiImplicitParam3-3-1@ApiImplicitParam注解的常用屬性,如下:3-3-2@ApiImplicitParam注解的不常用屬性,如下:3-4@ApiModel3-4-1@ApiModel注解的常用屬性,如下:3-5@ApiModelProperty3-5-1@ApiModelProperty注解的常用屬性,如下:3-5-2@ApiModelProperty注解的不常用屬性,如下:3-6@ApiResponse四、配置JavaBean五、配置Controller六、接口文檔預覽knife4j是為JavaMVC框架集成Swagger生成Api文檔的增強解決方案。
knife4j的前身是swagger-bootstrap-ui,為了契合微服務的架構發展,由于原來swagger-bootstrap-ui采用的是后端Java代碼+前端Ui混合打包的方式,在微服務架構下顯的很臃腫,因此項目正式更名為knife4j。knife4j官方網址:knife4j
一、引入依賴
Knife4J官網:
/
快速開始:/docs/quick-start
!--引入Knife4j的官方start包,Swagger2基于Springfox2.10.5項目--
dependency
groupIdcom.github.xiaoymin/groupId
!--使用Swagger2--
artifactIdknife4j-spring-boot-starter/artifactId
version2.0.9/version
/dependency
二、創建配置類
創建config包,在其中新建一個配置類:
@Configuration
@EnableSwagger2WebMvc
publicclassKnife4jConfiguration{
@Bean(value="dockerBean")
publicDocketdockerBean(){
//指定使用Swagger2規范
Docketdocket=newDocket(DocumentationType.SWAGGER_2)
.apiInfo(newApiInfoBuilder()
//描述字段支持Markdown語法
.description("#寫一個簡要的描述")
.termsOfServiceUrl("/")
.contact("可以寫作者的信息")
.version("1.0")
.build())
//分組名稱
.groupName("用戶服務")
.select()
//這里指定Controller掃描包路徑
.apis(RequestHandlerSelectors.basePackage("com.xueou.boot.controller"))
.paths(PathSelectors.any())
.build();
returndocket;
最重要的配置還是:指定Controller掃描包路徑contact
官方是棄用了直接傳字符串的這個設置方法,改用傳入一個Contact類,看一下源碼可以發現該類的結構(內容更豐富了:姓名、郵箱、URL連接)
三、常用注解
3-1@Api
@Api注解,添加在Controller類上,標記它作為Swagger文檔資源。
3-1-1@Api注解的常用屬性,如下:
tags屬性:用于控制API所屬的標簽列表。[]數組,可以填寫多個。可以在一個Controller上的@Api的tags屬性,設置多個標簽,那么這個Controller下的API接口,就會出現在這兩個標簽中。如果在多個Controller上的@Api的tags屬性,設置一個標簽,那么這些Controller下的API接口,僅會出現在這一個標簽中。本質上,tags就是為了分組API接口,和Controller本質上是一個目的。所以絕大數場景下,我們只會給一個Controller一個唯一的標簽。
3-1-2@Api注解的不常用屬性,如下:
produces屬性:請求請求頭的可接受類型(Accept)。如果有多個,使用,分隔。consumes屬性:請求請求頭的提交內容類型(Content-Type)。如果有多個,使用,分隔。protocols屬性:協議,可選值為http、https、ws、wss。如果有多個,使用,分隔。authorizations屬性:授權相關的配置,[]數組,使用@Authorization注解。hidden屬性:是否隱藏,不再API接口文檔中顯示。
@Api注解的廢棄屬性,不建議使用,有value、description、basePath、position。
3-2@ApiOperation
@ApiOperation注解,添加在Controller方法上,標記它是一個API操作。
3-2-1@ApiOperation注解的常用屬性,如下:
value屬性:API操作名。notes屬性:API操作的描述。
3-2-2@ApiOperation注解的不常用屬性,如下:
tags屬性:和@API注解的tags屬性一致。nickname屬性:API操作接口的唯一標識,主要用于和第三方工具做對接。httpMethod屬性:請求方法,可選值為GET、HEAD、POST、PUT、DELETE、OPTIONS、PATCH。因為Swagger會解析SpringMVC的注解,所以一般無需填寫。produces屬性:和@API注解的produces屬性一致。consumes屬性:和@API注解的consumes屬性一致。protocols屬性:和@API注解的protocols屬性一致。authorizations屬性:和@API注解的authorizations屬性一致。hidden屬性:和@API注解的hidden屬性一致。response屬性:響應結果類型。因為Swagger會解析方法的返回類型,所以一般無需填寫。responseContainer屬性:響應結果的容器,可選值為List、Set、Map。responseReference屬性:指定對響應類型的引用。這個引用可以是本地,也可以是遠程。并且,當設置了它時,會覆蓋response屬性。說人話,就是可以忽略這個屬性,哈哈哈。responseHeaders屬性:響應頭,[]數組,使用@ResponseHeader注解。code屬性:響應狀態碼,默認為200。extensions屬性:拓展屬性,[]屬性,使用@Extension注解。ignoreJsonView屬性:在解析操作和類型,忽略JsonView注釋。主要是為了向后兼容。
@ApiOperation注解的廢棄屬性,不建議使用,有position。
3-3@ApiImplicitParam
@ApiImplicitParam注解,添加在Controller方法上,聲明每個請求參數的信息。
3-3-1@ApiImplicitParam注解的常用屬性,如下:
name屬性:參數名。value屬性:參數的簡要說明。required屬性:是否為必傳參數。默認為false。dataType屬性:數據類型,通過字符串String定義。dataTypeClass屬性:數據類型,通過dataTypeClass定義。在設置了dataTypeClass屬性的情況下,會覆蓋dataType屬性。推薦采用這個方式。paramType屬性:參數所在位置的類型。有如下5種方式:
path值:對應SpringMVC的@PathVariable注解。
【默認值】query值:對應SpringMVC的@PathVariable注解。
body值:對應SpringMVC的@RequestBody注解。
header值:對應SpringMVC的@RequestHeader注解。
form值:Form表單提交,對應SpringMVC的@PathVariable注解。
絕大多數情況下,使用query值這個類型即可。
example屬性:參數值的簡單示例。examples屬性:參數值的復雜示例,使用@Example注解。
3-3-2@ApiImplicitParam注解的不常用屬性,如下:
defaultValue屬性:默認值。allowableValues屬性:允許的值。如果要設置多個值,有兩種方式:
數組方式,即{value1,value2,value3}。例如說,{1,2,3}。
范圍方式,即[value1,value2]或[value1,value2)。例如說[1,5]表示1到5的所有數字。如果有無窮的,可以使用(-infinity,value2]或[value1,infinity)。
allowEmptyValue屬性:是否允許空值。allowMultiple屬性:是否允許通過多次傳遞該參數來接受多個值。默認為false。type屬性:搞不懂具體用途,對應英文注釋為Addstheabilitytooverridethedetectedtype。readOnly屬性:是否只讀。format屬性:自定義的格式化。collectionFormat屬性:針對Collection集合的,自定義的格式化。
當我們需要添加在方法上添加多個@ApiImplicitParam注解時,可以使用@ApiImplicitParams注解中添加多個。
3-4@ApiModel
@ApiModel注解,添加在POJO類,聲明POJO類的信息。而在Swagger中,把這種POJO類稱為Model類。所以,我們下文就統一這么稱呼。
3-4-1@ApiModel注解的常用屬性,如下:
value屬性:Model名字。description屬性:Model描述。
3-4-2@ApiModel注解的不常用屬性,如下:
parent屬性:指定該Model的父Class類,用于繼承父Class的Swagger信息。subTypes屬性:定義該Model類的子類Class們。discriminator屬性:搞不懂具體用途,對應英文注釋為Supportsmodelinheritanceandpolymorphism.reference屬性:搞不懂具體用途,對應英文注釋為Specifiesareferencetothecorrespondingtypedefinition,overridesanyothermetadataspecified
3-5@ApiModelProperty
@ApiModelProperty注解,添加在Model類的成員變量上,聲明每個成員變量的信息。
3-5-1@ApiModelProperty注解的常用屬性,如下:
value屬性:屬性的描述。dataType屬性:和@ApiImplicitParam注解的dataType屬性一致。不過因為@ApiModelProperty是添加在成員變量上,可以自動獲得成員變量的類型。required屬性:和@ApiImplicitParam注解的required屬性一致。example屬性:@ApiImplicitParam注解的example屬性一致。
3-5-2@ApiModelProperty注解的不常用屬性,如下:
name屬性:覆蓋成員變量的名字,使用該屬性進行自定義。allowableValues屬性:和@ApiImplicitParam注解的allowableValues屬性一致。position屬性:成員變量排序位置,默認為0。hidden屬性:@ApiImplicitParam注解的hidden屬性一致。accessMode屬性:訪問模式,有AccessMode.AUTO、AccessMode.READ_ONLY、AccessMode.READ_WRITE三種,默認為AccessMode.AUTO。reference屬性:和@ApiModel注解的reference屬性一致。allowEmptyValue屬性:和@ApiImplicitParam注解的allowEmptyValue屬性一致。extensions屬性:和@ApiImplicitParam注解的extensions屬性一致。
@ApiModelProperty注解的廢棄屬性,不建議使用,有readOnly。
3-6@ApiResponse
在大多數情況下,我們并不需要使用@ApiResponse注解,因為我們會類似UserController#get(id)方法這個接口,返回一個Model即可。
@ApiResponse注解,添加在Controller類的方法上,聲明每個響應參數的信息。@ApiResponse注解的屬性,基本已經被@ApiOperation注解所覆蓋,如下:message屬性:響應的提示內容。code屬性:和@ApiOperation注解的code屬性一致。response屬性:和@ApiOperation注解的response屬性一致。reference屬性:和@ApiOperation注解的responseReference屬性一致。responseHeaders屬性:和@ApiOperation注解的responseHeaders屬性一致。responseContainer屬性:和@ApiOperation注解的responseContainer屬性一致。examples屬性:和@ApiOperation注解的examples屬性一致。
當我們需要添加在方法上添加多個@ApiResponse注解時,可以使用@ApiResponses注解中添加多個。
四、配置JavaBean
主要用于返回參數、或是接收參數的時候進行說明。
@Getter
@Setter
@ToString
@NoArgsConstructor
@ApiModel(value="輪播圖對象",description="")
publicclassBannerimplementsSerializable{
@ApiModelProperty(value="id",example="1")
@TableId(value="id",type=IdType.AUTO)
privateIntegerid;
@ApiModelProperty(value="圖像鏈接",example="https://xxx/xxx.png")
privateStringimgUrl;
@ApiModelProperty(value="標題",example="這是一個標題喲~")
privateStringtitle;
我自己用的時候,又封裝了一層,設置了幾個JavaBean用于包裝返回的響應結果:
分別用于返回單個數據、數據列表,同時附帶上狀態碼和說明信息。
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
publicabstractclassRBean{
@ApiModelProperty(value="響應碼",
position=0,
example="200",
notes="200:成功;500:失敗;")
privateIntegercode;
@ApiModelProperty(value="響應說明",position=1,example="xx數據獲取成功。")
privateStringmsg;
//=====================
@EqualsAndHashCode(callSuper=true)
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
publicclassROneBeanTextendsRBean{
@ApiModelProperty(value="數據項",position=2)
privateTdata;
//=======================
@EqualsAndHashCode(callSuper=true)
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
publicclassRListBeanTextendsRBean{
@ApiModelProperty(value="數據列表",position=2)
privateListTdata;
五、配置Controller
潦草的寫幾個接口
@Api(tags="首頁模塊")
@RestController
publicclassIndexController{
@Resource
IBannerServiceiBannerService;
@ApiOperation(value="域名直接轉接口文檔",hidden=true)
@GetMapping("/")
publicvoidtoDoc(HttpServletResponseresponse)throwsIOException{
response.sendRedirect("/doc.html");
@ApiOperation("新增輪播圖數據")
@PostMapping("/addBanners")
publicvoidputBanne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年海事專業技術資格考試試卷及答案
- 2025年投資理財師職業資格考試試題及答案
- 2025年金融市場學考試試卷及答案
- 2025年翻譯專業八級考試題及答案
- 互聯網藝術品鑒定與價值評估服務協議
- 娛樂行業替身保險補充合同細則
- 高端私人游艇專屬泊位租賃管理服務合同
- 智能家居產品體驗店加盟品牌授權與區域保護合同
- 智能家居研發項目保密補充協議
- 網絡廣告內容審查規范補充協議
- GB/T 45501-2025工業機器人三維視覺引導系統通用技術要求
- 2025年武漢數學四調試題及答案
- GB 19081-2025飼料加工系統粉塵防爆安全規范
- 2024年云南省初中學業水平考試地理試卷含答案
- 2023武漢四調數學試卷及答案(Word精校版)
- 2021年全國質量獎現場匯報材料-基礎設施、設備及設施管理過程課件
- 技能大師工作室成員協議范本書
- PICC專科護士進修學習匯報
- 工廠如何消除靜電與防止靜電實踐篇
- 我學會了洗碗作文
- 武漢市住宅專項維修資金使用申請表
評論
0/150
提交評論