国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

比試一下:Swagger3就是比2簡單粗暴

開發 前端
接口文檔總是很煩人,我曾經嘗試過用Postman來編寫和分享項目文檔,感覺還不錯。但是最近項目緊,我沒有額外的時間可以花在它上面,這也導致我嘗試YApi(另外一種文檔)的計劃泡湯了。

[[392715]]

接口文檔總是很煩人,我曾經嘗試過用Postman來編寫和分享項目文檔,感覺還不錯。但是最近項目緊,我沒有額外的時間可以花在它上面,這也導致我嘗試YApi(另外一種文檔)的計劃泡湯了。嗯,目前沒有比Swagger更快、更傻瓜的工具,雖然它有嚴重的代碼污染。先拿這個對付一陣時間,等閑暇時間再玩YApi。

Swagger3集成

Swagger目前最新版本是3.0.0,在Spring Boot應用中集成Swagger3比老的Swagger2簡單多了,它提供了一個Starter組件。

  1. <dependency> 
  2.     <groupId>io.springfox</groupId> 
  3.     <artifactId>springfox-boot-starter</artifactId> 
  4.     <version>3.0.0</version> 
  5. </dependency> 

 

就這就可以了,簡單不?

至于有的教程說還要開啟注解@EnableOpenApi,完全不需要。因為在springfox-boot-starter-3.0.0.jar下你可以找到一個spring.factories,熟悉Spring Boot的同學都知道這個是一個Spring Boot 特有的SPI文件,能夠自動的發現并注冊Starter組件的配置。里面有這樣的配置:

  1. # Auto Configure 
  2. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 
  3. springfox.boot.starter.autoconfigure.OpenApiAutoConfiguration 

順藤摸瓜,找到總的配置類OpenApiAutoConfiguration:

  1. @Configuration 
  2. @EnableConfigurationProperties(SpringfoxConfigurationProperties.class) 
  3. @ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true
  4. @Import({ 
  5.     OpenApiDocumentationConfiguration.class, 
  6.     SpringDataRestConfiguration.class, 
  7.     BeanValidatorPluginsConfiguration.class, 
  8.     Swagger2DocumentationConfiguration.class, 
  9.     SwaggerUiWebFluxConfiguration.class, 
  10.     SwaggerUiWebMvcConfiguration.class 
  11. }) 
  12. @AutoConfigureAfter({ WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class, 
  13.     HttpMessageConvertersAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class }) 
  14. public class OpenApiAutoConfiguration { 
  15.  

一些發現

我們找到了關鍵的一個地方@ConditionalOnProperty注解聲明了當springfox.documentation.enabled為true時啟用配置,而且默認值就是true。這非常有用,Swagger僅僅建議在開發階段使用,這個正好是個開關。另外有時候我們自定義配置的時候最好把這個開關也加上:

  1. // 自定義swagger3文檔信息 
  2. @Configuration 
  3. @ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true
  4. public class Swagger3Config { 
  5.     @Bean 
  6.     public Docket createRestApi() { 
  7.         return new Docket(DocumentationType.OAS_30) 
  8.                 .apiInfo(apiInfo()) 
  9.                 .select() 
  10.                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) 
  11.                 .paths(PathSelectors.any()) 
  12.                 .build(); 
  13.     } 
  14.  
  15.     private ApiInfo apiInfo() { 
  16.         return new ApiInfoBuilder() 
  17.                 .title("Swagger3接口文檔"
  18.                 .description("更多請咨詢felord.cn"
  19.                 .contact(new Contact("碼農小胖哥""https://felord.cn""dax@felord.cn")) 
  20.                 .version("1.0.0"
  21.                 .build(); 
  22.     } 

如果你想在Swagger3中加入Json Web Token,可以參考這篇文章。

最開始我們提到Swagger3不需要使用@EnableOpenApi或者@EnableSwagger2開啟,這里也能找到答案。

  1. @Import(OpenApiDocumentationConfiguration.class) 
  2. public @interface EnableOpenApi { 
  3. @Import(Swagger2DocumentationConfiguration.class) 
  4. public @interface EnableSwagger2 { 

上面的兩個導入類都可以在OpenApiAutoConfiguration找到,所以Swagger3提供的是全自動的集成。

和全局統一參數不兼容

如果你使用了統一返回體封裝器來標準化Spring MVC接口的統一返回

  1. /** 
  2.  * 返回體統一封裝器 
  3.  * 
  4.  * @author n1 
  5.  */ 
  6. @RestControllerAdvice  
  7. public class RestBodyAdvice implements ResponseBodyAdvice<Object> { 
  8.     @Override 
  9.     public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { 
  10.         return !returnType.hasMethodAnnotation(IgnoreRestBody.class); 
  11.     } 
  12.  
  13.     @Override 
  14.     public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { 
  15.  
  16.         if (body == null) { 
  17.             return RestBody.ok(); 
  18.         } 
  19.         if (Rest.class.isAssignableFrom(body.getClass())) { 
  20.             return body; 
  21.         } 
  22.         return RestBody.okData(body); 
  23.     } 

你會發現Swagger3會報Unable to infer base url……的錯誤,這是因為統一返回體影響到了Swagger3的一些內置接口。解決方法是@RestControllerAdvice控制好生效的包范圍,也就是配置其basePackages參數就行了,這個潛在的沖突浪費我了一個多小時。

安全框架放行

如果你使用安全框架,Swagger3的內置接口就會訪問受限,我們需要排除掉。Spring Security是這么配置的:

  1. @Override 
  2. public void configure(WebSecurity web) throws Exception { 
  3.     //忽略swagger3所需要用到的靜態資源,允許訪問 
  4.     web.ignoring().antMatchers( "/swagger-ui.html"
  5.             "/swagger-ui/**"
  6.             "/swagger-resources/**"
  7.             "/v2/api-docs"
  8.             "/v3/api-docs"
  9.             "/webjars/**"); 

如果你使用的版本是Spring Security 5.4,你可以這么定制WebSecurity:

  1. @Bean 
  2. WebSecurityCustomizer swaggerWebSecurityCustomizer() { 
  3.     return (web) -> { 
  4.         web.ignoring().antMatchers(new String[]{"/swagger-ui.html""/swagger-ui/**""/swagger-resources/**""/v2/api-docs""/v3/api-docs""/webjars/**"}); 
  5.     }; 

更加方便簡單圖片,這樣Swagger就能正常的渲染和訪問了。

總結

 

 

 

今天分享了一些swagger3的配置心得,希望能夠幫助你上手最新的swagger3文檔工具。

本文轉載自微信公眾號「碼農小胖哥」,可以通過以下二維碼關注。轉載本文請聯系碼農小胖哥公眾號。

 

責任編輯:武曉燕 來源: 碼農小胖哥
相關推薦

2022-07-21 11:04:53

Swagger3Spring

2024-11-05 09:25:45

2010-12-06 09:10:02

LightSwitch

2023-02-08 09:02:05

VS Code摸魚神器

2022-06-29 10:04:01

PiniaVuex

2020-10-15 11:18:13

Linux內核虛擬機

2022-03-02 10:53:22

Postman工具開發

2022-12-03 18:24:13

數據能力場景

2022-08-08 10:09:08

Vitest單元測試

2009-11-17 11:14:25

Oracle擴展

2021-05-07 20:27:14

SpringBootSwagger3文檔

2013-11-20 13:41:32

IE微軟解決方法

2021-01-21 07:31:11

Filter框架權限

2018-02-08 10:52:13

Kotlin語言代碼

2010-06-13 17:57:23

局域網協議

2020-07-02 09:46:05

AI

2011-07-20 16:13:03

SQL Profile數據庫

2009-06-15 11:22:06

2024-01-31 08:23:54

2015-11-12 10:32:27

前端后端分離
點贊
收藏

51CTO技術棧公眾號

午夜精品一区二区三区在线| 99久re热视频精品98| 欧美成人xxxx| 欧美精品久久久久久久多人混战| 老头吃奶性行交视频| 国产精品一二三| 日韩国产精品一区二区三区| 国语精品一区| 亚洲自拍偷拍福利| 亚洲91视频| 亚洲最大福利视频网| 99久久99久久精品国产片桃花| 91黑丝高跟在线| 国产精品久久久久av蜜臀| 国产一区二区欧美日韩| 波多野结衣中文在线| 91麻豆精品国产自产在线| 999国产在线视频| 日韩欧美有码在线| 亚洲女人视频| 尤物在线观看一区| 成色在线视频| 亚洲一区二区三区在线看| 瑜伽美女视频| 亚洲777理论| 蜜桃视频在线观看视频| 欧美三级乱人伦电影| 又爽又大又黄a级毛片在线视频| 在线观看精品一区| 国产原创在线观看| 亚洲精品第一页| 欧美极度另类| 麻豆乱码国产一区二区三区| 911精品国产| 日韩av色综合| 亚洲精品在线观看91| 精品无码久久久久国产| 麻豆一区二区三| 夫妻免费无码v看片| 国产精品久久综合| 天堂а在线中文在线无限看推荐| 欧美自拍丝袜亚洲| 国产精品186在线观看在线播放| 亚洲欧洲日产国产网站| 欧美专区一区| 91九色单男在线观看| 亚洲自拍另类| 一卡二卡三卡视频| 亚洲人亚洲人成电影网站色| 日本一卡二卡四卡精品| 欧美大片在线观看一区| 日韩久久一区| 国产欧美日韩亚洲精品| 久久一区二区三区超碰国产精品| 精品人妻人人做人人爽| 综合精品久久久| 久久国产加勒比精品无码| 美女久久精品| 国产日韩欧美在线观看| 全国精品久久少妇| 丰满少妇在线观看| 91成人在线精品| 亚洲精品福利电影| 2019av中文字幕| 一本色道久久综合亚洲精品高清 | 美女写真理伦片在线看| 亚洲免费一在线| 美女精品一区最新中文字幕一区二区三区| 99高清视频有精品视频| 成人高清视频免费观看| 日本人妖在线| 日日狠狠久久偷偷四色综合免费 | 久久综合久久八八| 欧美疯狂party性派对| 强伦女教师2:伦理在线观看| 亚洲男人的天堂在线aⅴ视频| av免费网站在线观看| 欧美黄色小视频| 免费亚洲网站| 男女午夜网站| 亚洲国产天堂网精品网站| 西野翔中文久久精品字幕| 午夜视频久久久| 自拍偷拍欧美精品| 永久免费毛片在线播放| 国产精品久久久久久久久久久久久久 | 欧美在线色视频| 四虎视频在线精品免费网址| 亚洲a级在线观看| 一级毛片视频在线| 欧美成人一二三| 国产精品资源| 色琪琪免费视频网站| 色婷婷av一区二区三区在线观看 | 欧美在线性视频| 国产精品亚洲一区二区三区妖精| 国际av在线| 国产91精品久| 99re成人在线| 色资源二区在线视频| 国产乱人伦精品一区二区| 国产精品久久福利| 国产伊人久久| 亚洲人成网站在线观看播放| 精品福利一区二区| 九九热播视频在线精品6| 永久免费网站视频在线观看| 欧美日韩国产成人在线免费| 波多野结衣的一区二区三区| 欧美激情国产精品日韩| 亚洲精品久久久久国产| 影视一区二区| 草莓污污视频在线观看| 国语自产精品视频在线看| 不卡av电影在线播放| 色综合亚洲图丝熟| 欧美综合77777色婷婷| 色噜噜偷拍精品综合在线| 成人情趣视频网站| 理论片播放午夜国外| 久久久免费观看| 国产日本亚洲高清| 精品国产18久久久久久二百| 五月丁香综合缴情六月小说| 亚洲精品在线视频| 日韩va亚洲va欧美va久久| 日本三级视频在线播放| 国产91精品一区二区绿帽| 亚洲午夜一区二区| 国产欧美高清视频在线| 骚视频在线观看| 国产精品久久久久久久app| 成人在线黄色电影| 少妇特黄a一区二区三区| 欧美va亚洲va香蕉在线| 美国三级日本三级久久99| 在线天堂资源| 欧美一区二区中文字幕| 欧美成人四级hd版| 一区二区中文视频| 国产欧美一区二区精品久久久| 四色成人av永久网址| 95av在线视频| 91精品婷婷国产综合久久性色 | 88xx成人网| 99蜜桃臀久久久欧美精品网站| 欧美裸身视频免费观看| 国产精品不卡视频| 狠狠做深爱婷婷综合一区| 黄页网址在线观看| 成人欧美一区二区三区在线湿哒哒| 色婷婷综合激情| 久久婷婷av| 亚洲精品一区三区三区在线观看| 成人中文字幕av| 国产欧美 在线欧美| 在线电影欧美成精品| 国产高清精品久久久久| 69精品国产久热在线观看| 中文字幕高清在线观看| 久久久久综合一区二区三区| 亚洲欧洲偷拍精品| 亚洲欧美在线观看| 欧美在线免费| 欧美黑人粗大| 开心快乐六月丁香婷婷| 久久99九九| 一区二区三区 在线观看视| 亚洲欧美自拍偷拍色图| 亚洲视频碰碰| 欧美日韩成人影院| 影院免费视频| 亚洲高清在线观看一区| 欧美激情xxxx性bbbb| 一道本成人在线| 国产高清成人在线| 欧美人妖在线| 91美女主播在线视频| 日本三级黄色网址| 国产欧美日韩综合精品二区| 亚洲视频在线观看视频| 亚洲成a人片在线观看中文| 久久精品国内一区二区三区 | 久久中文字幕国产| 欧美日韩免费网站| 国产成人一区在线| 天天射—综合中文网| 成人影院入口| 色影视在线视频资源站| 国产麻豆电影在线观看| 国产精品久久久久久久久久久不卡| 日韩精品资源二区在线| 国产精品丝袜久久久久久app| 亚洲免费网址| 亚洲瘦老头同性70tv| 91视频欧美| 校园春色综合| 欧美丰满熟妇xxxxx| 日本一区二区三区视频免费看| 欧洲亚洲免费视频|