swagger3.0实现https接口请求全过程

 更新时间:2026年01月01日 16:03:58   作者:stjl.xyz  
文章描述了在开发过程中遇到Swagger拦截器配置错误的问题,并通过自定义Swagger拦截器解决了该问题,最后重启项目以应用更改

swagger3.0实现https接口请求

1.场景复现

2.解决方法 

自定义swagger拦截器

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import springfox.documentation.oas.web.OpenApiTransformationContext;
import springfox.documentation.oas.web.WebMvcOpenApiTransformationFilter;
import springfox.documentation.spi.DocumentationType;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

@Component
public class SpringFoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter {

    private final static String LOCALHOST = "localhost:8009";
    private final static String ZC = "zc.chenxin6.com";
    @Override
    public OpenAPI transform(OpenApiTransformationContext<HttpServletRequest> context) {

        HttpServletRequest request = context.request().get();

        OpenAPI swagger = context.getSpecification();

        String scheme = "http";
        String referer = request.getHeader("Referer");

        if(StringUtils.hasLength(referer)){
            //获取协议
            scheme = referer.split(":")[0];
        }

        List<Server> servers = new ArrayList<>();
        String finalScheme = scheme;
        //重新组装server信息
        swagger.getServers().forEach(item->{

            //替换协议,去掉默认端口
            item.setUrl(clearDefaultPort(item.getUrl().replace("http", finalScheme)));
            servers.add(item);
        });
        swagger.setServers(servers);
        return swagger;
    }

    //替换成线上的域名
    private String clearDefaultPort(String url){
        if (url.contains(LOCALHOST)) {
            return url.replace(LOCALHOST,ZC);
        }
        return url;
    }

    @Override
    public boolean supports(DocumentationType documentationType) {
        return documentationType.equals(DocumentationType.OAS_30);
    }
}

3.重启项目

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java从List中删除元素的几种方式小结

    Java从List中删除元素的几种方式小结

    在Java中,List 接口提供了一个 remove(Object o) 方法来移除列表中与给定对象相等的第一个元素,然而,直接使用这个方法来删除列表中的元素有时并不是最优的选择,主要原因包括效率和同步性问题,本文介绍了Java从List中删除元素的几种方式,需要的朋友可以参考下
    2024-08-08
  • spring-logback引用外部文件实现方式

    spring-logback引用外部文件实现方式

    本文介绍了如何在Spring微服务开发中实现统一的日志配置,包括使用logback的继承方式和spring-logback.xml配置,以及如何解决logback-include.xml文件在jar包中的位置问题,通过这种方式,可以在统一的日志格式和存储方式下,给予服务一定程度的自主控制
    2025-11-11
  • MyBatis拦截器:给参数对象属性赋值的实例

    MyBatis拦截器:给参数对象属性赋值的实例

    下面小编就为大家带来一篇MyBatis拦截器:给参数对象属性赋值的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • springboot工程jar包部署到云服务器的方法

    springboot工程jar包部署到云服务器的方法

    这篇文章主要介绍了springboot工程jar包部署到云服务器的方法,本文通过实例介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • BigDecimal divide除法除不尽报错的问题及解决

    BigDecimal divide除法除不尽报错的问题及解决

    这篇文章主要介绍了BigDecimal divide除法除不尽报错的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 关于Lombok @Data注解:简化Java代码的魔法棒

    关于Lombok @Data注解:简化Java代码的魔法棒

    Lombok库通过@Data注解自动生成常见的样板代码如getter、setter、toString等,极大减少代码量,提高开发效率,@Data注解集成了@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor等注解的功能
    2024-10-10
  • 使用Spring Security和JWT实现安全认证机制

    使用Spring Security和JWT实现安全认证机制

    在现代 Web 应用中,安全认证和授权是保障数据安全和用户隐私的核心机制,Spring Security 是 Spring 框架下专为安全设计的模块,具有高度的可配置性和扩展性,而 JWT则是当前流行的认证解决方案,所以本文介绍了如何使用Spring Security和JWT实现安全认证机制
    2024-11-11
  • JpaRepository 实现简单条件查询

    JpaRepository 实现简单条件查询

    这篇文章主要介绍了JpaRepository 实现简单条件查询,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 关于Spring AOP使用时的一些问题汇总

    关于Spring AOP使用时的一些问题汇总

    这篇文章主要给大家汇总介绍了关于Spring AOP使用时的一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • SpringBoot使用Nacos配置中心的实现

    SpringBoot使用Nacos配置中心的实现

    这篇文章主要介绍了SpringBoot使用Nacos配置中心的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论