您好,登錄后才能下訂單哦!
這篇文章主要介紹了使用@ApiModel遇到的問題如何解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇使用@ApiModel遇到的問題如何解決文章都會有所收獲,下面我們一起來看看吧。
使用 swagger2 中的 @ApiModel 注解不規范遇到的 swagger 文檔 錯亂問題:
以前使用 swagger2 時, 在出入參實體上添加注解 @ApiModel 時習慣性的添加 value = "XXX" 屬性, 舊版本中一直沒有發現有什么問題.
最近在使用 swagger2:2.9.2 版本時, 遇到一個問題, swagger 文檔中的 入參 結構示例中的入參參數跟代碼的入參對象中的字段不匹配不一致, 導致接口聯調問題多
經過排查發現是因為 @ApiModel 直接使用不規范導致的。
錯誤用法:@ApiModel(value = "用戶信息")
正確用法:@ApiModel(description = "用戶信息")
經過排查發現, swagger2 是需要 value 屬性在同一個服務全局中保持唯一的, swagger 會把所有的 API 中的出入參實體列在 swagger 文檔的最下方, 如果存在多個實體的 @ApiModel(value = "用戶信息") 注解相同, 那么 swagger 只會識別一個, 其他的 實體 會被覆蓋, 不會被顯示, 其他被覆蓋的 實體在 API 被引用的地方在文檔中會被識別的相同名稱的實體 替代, 導致文檔展示錯亂問題
使用正確的用法:
@ApiModel(description = "用戶信息"), 如果我們能在代碼規范中保證實體名稱不會重復, value 使用默認就好, 所以不再配置, 實體說明使用 description 來進行配置.
springfox-swagger2 (version = 2.9.2)
swagger-bootstrap-ui (version = 1.9.6)
swagger-models (version =1.6.1)
使用場景:在實體類上邊使用,標記類時swagger的解析類
屬性名稱 | 數據類型 | 默認值 | 說明 |
---|---|---|---|
value | String | 類名 | 為模型提供備用名稱 |
description | String | " | 提供詳細的類描述 |
parent | Class<?> | Void.class | 為模型提供父類以允許描述繼承關系 |
discriminator | String | " | 支持模型繼承和多態,使用鑒別器的字段的名稱,可以斷言需要使用哪個子類型 |
subTypes | Class<?>[] | {} | 從此模型繼承的子類型數組 |
reference | String | ‘’ | 指定對應類型定義和引用,覆蓋指定的任何其它元數據 |
使用場景:使用在被 @ApiModel 注解的模型類的屬性上
屬性名稱 | 數據類型 | 默認值 | 說明 |
---|---|---|---|
value | String | " | 屬性簡要說明 |
name | String | " | 運行覆蓋屬性的名稱,重寫屬性名稱 |
allowableValues | String | " | 限制參數可接受的值 |
access | String | " | 過濾屬性 |
notes | String | " | 尚未使用 |
dataType | String | " | 參數的數據類型 |
required | boolean | false | 是否必傳 |
position | int | 0 | 允許在模型中排序屬性 |
hidden | boolean | false | 隱藏模型屬性 |
example | String | " | 屬性的示例值 |
readOnly | boolean | false | 指定模型屬性為只讀,false:非只讀 |
reference | String | " | 指定對應類型定義的引用,覆蓋指定的任何其他元數據 |
allowEmptyValue | boolean | false | 允許傳空置,false:不允許傳空值 |
關于“使用@ApiModel遇到的問題如何解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“使用@ApiModel遇到的問題如何解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。