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.重启项目


总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringMVC Json自定义序列化和反序列化的操作方法
这篇文章主要介绍了SpringMVC Json自定义序列化和反序列化的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-01-01
使用RestTemplate访问https实现SSL请求操作
这篇文章主要介绍了使用RestTemplate访问https实现SSL请求操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10
mybatis 获取更新(update)记录的id之<selectKey>用法说明
这篇文章主要介绍了mybatis 获取更新(update)记录的id之<selectKey>用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-05-05


最新评论