iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Swagger3的优点有哪些
  • 139
分享到

Swagger3的优点有哪些

2024-04-02 19:04:59 139人浏览 八月长安
摘要

这篇文章主要介绍“swagger3的优点有哪些”,在日常操作中,相信很多人在Swagger3的优点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Swagger3的优点有

这篇文章主要介绍“swagger3的优点有哪些”,在日常操作中,相信很多人在Swagger3的优点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Swagger3的优点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Swagger3集成

Swagger目前最新版本是3.0.0,在spring  Boot应用中集成Swagger3比老的Swagger2简单多了,它提供了一个Starter组件。

<dependency>     <groupId>io.springfox</groupId>     <artifactId>springfox-boot-starter</artifactId>     <version>3.0.0</version> </dependency>

就这就可以了,简单不?

至于有的教程说还要开启注解@EnableOpenapi,完全不需要。因为在springfox-boot-starter-3.0.0.jar下你可以找到一个spring.factories,熟悉Spring  Boot的同学都知道这个是一个Spring Boot 特有的SPI文件,能够自动的发现并注册Starter组件的配置。里面有这样的配置:

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

顺藤摸瓜,找到总的配置类OpenApiAutoConfiguration:

@Configuration @EnableConfigurationProperties(SpringfoxConfigurationProperties.class) @ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true) @Import({     OpenApiDocumentationConfiguration.class,     SpringDataRestConfiguration.class,     BeanValidatorPluginsConfiguration.class,     Swagger2DocumentationConfiguration.class,     SwaggerUiWEBFluxConfiguration.class,     SwaggerUiWebmvcConfiguration.class }) @AutoConfigureAfter({ WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class,     HttpMessageConvertersAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class }) public class OpenApiAutoConfiguration {  }

一些发现

我们找到了关键的一个地方@ConditionalOnProperty注解声明了当springfox.documentation.enabled为true时启用配置,而且默认值就是true。这非常有用,Swagger仅仅建议在开发阶段使用,这个正好是个开关。另外有时候我们自定义配置的时候最好把这个开关也加上:

// 自定义swagger3文档信息 @Configuration @ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true) public class Swagger3Config {     @Bean     public Docket createRestApi() {         return new Docket(DocumentationType.OAS_30)                 .apiInfo(apiInfo())                 .select()                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                 .paths(PathSelectors.any())                 .build();     }      private ApiInfo apiInfo() {         return new ApiInfoBuilder()                 .title("Swagger3接口文档")                 .description("更多请咨询felord.cn")                 .contact(new Contact("码农小胖哥", "https://felord.cn", "dax@felord.cn"))                 .version("1.0.0")                 .build();     } }

如果你想在Swagger3中加入JSON Web Token,可以参考这篇文章。

最开始我们提到Swagger3不需要使用@EnableOpenApi或者@EnableSwagger2开启,这里也能找到答案。

@Import(OpenApiDocumentationConfiguration.class) public @interface EnableOpenApi { } @Import(Swagger2DocumentationConfiguration.class) public @interface EnableSwagger2 { }

上面的两个导入类都可以在OpenApiAutoConfiguration找到,所以Swagger3提供的是全自动的集成。

和全局统一参数不兼容

如果你使用了统一返回体封装器来标准化Spring MVC接口的统一返回

 @RestControllerAdvice  public class RestBodyAdvice implements ResponseBodyAdvice<Object> {     @Override     public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {         return !returnType.hasMethodAnnotation(IgnoreRestBody.class);     }      @Override     public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {          if (body == null) {             return RestBody.ok();         }         if (Rest.class.isAssignableFrom(body.getClass())) {             return body;         }         return RestBody.okData(body);     } }

你会发现Swagger3会报Unable to infer base  url&hellip;&hellip;的错误,这是因为统一返回体影响到了Swagger3的一些内置接口。解决方法是@RestControllerAdvice控制好生效的包范围,也就是配置其basePackages参数就行了,这个潜在的冲突浪费我了一个多小时。

安全框架放行

如果你使用安全框架,Swagger3的内置接口就会访问受限,我们需要排除掉。Spring Security是这么配置的:

@Override public void configure(WebSecurity web) throws Exception {     //忽略swagger3所需要用到的静态资源,允许访问     web.ignoring().antMatchers( "/swagger-ui.html",             "/swagger-ui/**",             "/swagger-resources/**",             "/v2/api-docs",             "/v3/api-docs",             "/webjars/**"); }

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

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

更加方便简单图片,这样Swagger就能正常的渲染和访问了。

到此,关于“Swagger3的优点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Swagger3的优点有哪些

本文链接: https://www.lsjlt.com/news/83139.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Swagger3的优点有哪些
    这篇文章主要介绍“Swagger3的优点有哪些”,在日常操作中,相信很多人在Swagger3的优点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Swagger3的优点有...
    99+
    2024-04-02
  • Python的优点有哪些
    这篇文章主要讲解了“Python的优点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的优点有哪些”吧!  基于Python本身的优点:简单,易学,速度快,免费、开源,高层语...
    99+
    2023-06-02
  • vscode的优点有哪些
    vscode的优点有以下几点:轻量级vscode是一款轻量级的编辑器,安装包小,且启动速度快,可以提高用户体验。插件丰富vscode拥有丰富的插件系统,可以编辑HTML、CSS、JS、TS、Vue、React等前端代码和JAVA、Pytho...
    99+
    2024-04-02
  • ChatGPT的优点有哪些
    这篇“ChatGPT的优点有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ChatGP...
    99+
    2023-02-20
    chatgpt
  • DevOps的优点有哪些
    这篇文章主要讲解了“DevOps的优点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“DevOps的优点有哪些”吧!DevOps(Development和Operations的组合词)是...
    99+
    2023-06-27
  • UGUI的优点有哪些
    这篇文章主要为大家展示了“UGUI的优点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“UGUI的优点有哪些”这篇文章吧。UGUI的优点新UI系统二 直观、易于使用对于UI控件,开发者可以直...
    99+
    2023-06-04
  • HTAP的优点有哪些
    这篇文章主要讲解了“HTAP的优点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTAP的优点有哪些”吧!4 月 25 日,领先的企业级开源分布式数据...
    99+
    2024-04-02
  • Log4j2的优点有哪些
    这篇文章主要讲解了“Log4j2的优点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Log4j2的优点有哪些”吧!Log4j2简介Apache Log4j 2是 Log4j(1) 的升...
    99+
    2023-06-15
  • pandas的优点有哪些
    本篇内容主要讲解“pandas的优点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pandas的优点有哪些”吧!下面是一个例子,数据获取方式见文末。>>> im...
    99+
    2023-06-15
  • VPS的优点有哪些
    VPS的优点有:1、VPS的扩展性强,能够无限创建网站子目录以及升级配置,从而满足网站后期发展的需求;2、VPS用途广,能够直接生成网站程序,速度快、效率高;3、VPS独立性好,具备独立IP资源,有利于网站优化;4、VPS稳定性高,当独享V...
    99+
    2024-04-02
  • ClickHouse的优点有哪些
    本篇内容介绍了“ClickHouse的优点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Clic...
    99+
    2024-04-02
  • javascript的优点有哪些
    javascript的优点有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。(1).javascript的优点:javascript减少网络传输。在javas...
    99+
    2023-06-14
  • TypeScript的优点有哪些
    本篇内容介绍了“TypeScript的优点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Chirag...
    99+
    2024-04-02
  • jquery的优点有哪些
    这篇文章主要介绍了jquery的优点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。jquery的优点jQuery 是轻量级的框架,大小...
    99+
    2024-04-02
  • Iodine有哪些优点
    本篇内容主要讲解“Iodine有哪些优点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Iodine有哪些优点”吧!1. 更优秀的语言Iodine是常规Java的完整超集,它提供了强大的功能,使得...
    99+
    2023-06-17
  • OJB有哪些优点
    这篇文章主要介绍“OJB有哪些优点”,在日常操作中,相信很多人在OJB有哪些优点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”OJB有哪些优点”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!简介:对象关系桥...
    99+
    2023-06-03
  • prototype有哪些优点
    这篇文章主要讲解了“prototype有哪些优点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“prototype有哪些优点”吧!效果Prototype有许多和Abstract Factory...
    99+
    2023-06-19
  • HBase有哪些优点
    本篇内容介绍了“HBase有哪些优点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是HBase?HBase是一个分布式的、面向列的开源数...
    99+
    2023-06-02
  • html5有哪些优点
    本篇内容介绍了“html5有哪些优点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!html5是最近几年逐渐...
    99+
    2024-04-02
  • nodejs有哪些优点
    这篇文章主要讲解了“nodejs有哪些优点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs有哪些优点”吧! nodej...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作