溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用@ApiModel遇到的問(wèn)題如何解決

發(fā)布時(shí)間:2022-06-14 13:35:21 來(lái)源:億速云 閱讀:203 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了使用@ApiModel遇到的問(wèn)題如何解決的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇使用@ApiModel遇到的問(wèn)題如何解決文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

@ApiModel遇到的問(wèn)題

使用 swagger2 中的 @ApiModel 注解不規(guī)范遇到的 swagger 文檔 錯(cuò)亂問(wèn)題:

1. 習(xí)慣

以前使用 swagger2 時(shí), 在出入?yún)?shí)體上添加注解 @ApiModel 時(shí)習(xí)慣性的添加 value = "XXX" 屬性, 舊版本中一直沒(méi)有發(fā)現(xiàn)有什么問(wèn)題.

2. 遇坑

最近在使用 swagger2:2.9.2 版本時(shí), 遇到一個(gè)問(wèn)題, swagger 文檔中的 入?yún)?結(jié)構(gòu)示例中的入?yún)?shù)跟代碼的入?yún)?duì)象中的字段不匹配不一致, 導(dǎo)致接口聯(lián)調(diào)問(wèn)題多

3. 排查

經(jīng)過(guò)排查發(fā)現(xiàn)是因?yàn)?@ApiModel 直接使用不規(guī)范導(dǎo)致的。

  • 錯(cuò)誤用法:@ApiModel(value = "用戶信息")

  • 正確用法:@ApiModel(description = "用戶信息")

經(jīng)過(guò)排查發(fā)現(xiàn), swagger2 是需要 value 屬性在同一個(gè)服務(wù)全局中保持唯一的, swagger 會(huì)把所有的 API 中的出入?yún)?shí)體列在 swagger 文檔的最下方, 如果存在多個(gè)實(shí)體的 @ApiModel(value = "用戶信息") 注解相同, 那么 swagger 只會(huì)識(shí)別一個(gè), 其他的 實(shí)體 會(huì)被覆蓋, 不會(huì)被顯示, 其他被覆蓋的 實(shí)體在 API 被引用的地方在文檔中會(huì)被識(shí)別的相同名稱的實(shí)體 替代, 導(dǎo)致文檔展示錯(cuò)亂問(wèn)題

4. 解決

使用正確的用法:

@ApiModel(description = "用戶信息"), 如果我們能在代碼規(guī)范中保證實(shí)體名稱不會(huì)重復(fù), value 使用默認(rèn)就好, 所以不再配置, 實(shí)體說(shuō)明使用 description 來(lái)進(jìn)行配置.

@ApiModel和@ApiModelProperty

版本

  • springfox-swagger2 (version = 2.9.2)

  • swagger-bootstrap-ui (version = 1.9.6)

  • swagger-models (version =1.6.1)

@ApiModel

  • 使用場(chǎng)景:在實(shí)體類上邊使用,標(biāo)記類時(shí)swagger的解析類

屬性名稱數(shù)據(jù)類型默認(rèn)值說(shuō)明
valueString類名為模型提供備用名稱
descriptionString"提供詳細(xì)的類描述
parentClass<?>Void.class為模型提供父類以允許描述繼承關(guān)系
discriminatorString"支持模型繼承和多態(tài),使用鑒別器的字段的名稱,可以斷言需要使用哪個(gè)子類型
subTypesClass<?>[]{}從此模型繼承的子類型數(shù)組
referenceString&lsquo;&rsquo;指定對(duì)應(yīng)類型定義和引用,覆蓋指定的任何其它元數(shù)據(jù)

@ApiModelProperty

  • 使用場(chǎng)景:使用在被 @ApiModel 注解的模型類的屬性上

屬性名稱數(shù)據(jù)類型默認(rèn)值說(shuō)明
valueString"屬性簡(jiǎn)要說(shuō)明
nameString"運(yùn)行覆蓋屬性的名稱,重寫屬性名稱
allowableValuesString"限制參數(shù)可接受的值
accessString"過(guò)濾屬性
notesString"尚未使用
dataTypeString"參數(shù)的數(shù)據(jù)類型
requiredbooleanfalse是否必傳
positionint0允許在模型中排序?qū)傩?/td>
hiddenbooleanfalse隱藏模型屬性
exampleString"屬性的示例值
readOnlybooleanfalse指定模型屬性為只讀,false:非只讀
referenceString"指定對(duì)應(yīng)類型定義的引用,覆蓋指定的任何其他元數(shù)據(jù)
allowEmptyValuebooleanfalse允許傳空置,false:不允許傳空值

關(guān)于“使用@ApiModel遇到的問(wèn)題如何解決”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“使用@ApiModel遇到的問(wèn)題如何解決”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI