swagger3.0實現(xiàn)https接口請求全過程
更新時間:2026年01月01日 16:03:58 作者:stjl.xyz
文章描述了在開發(fā)過程中遇到Swagger攔截器配置錯誤的問題,并通過自定義Swagger攔截器解決了該問題,最后重啟項目以應(yīng)用更改
swagger3.0實現(xiàn)https接口請求
1.場景復現(xiàn)


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)){
//獲取協(xié)議
scheme = referer.split(":")[0];
}
List<Server> servers = new ArrayList<>();
String finalScheme = scheme;
//重新組裝server信息
swagger.getServers().forEach(item->{
//替換協(xié)議,去掉默認端口
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.重啟項目


總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring-logback引用外部文件實現(xiàn)方式
本文介紹了如何在Spring微服務(wù)開發(fā)中實現(xiàn)統(tǒng)一的日志配置,包括使用logback的繼承方式和spring-logback.xml配置,以及如何解決logback-include.xml文件在jar包中的位置問題,通過這種方式,可以在統(tǒng)一的日志格式和存儲方式下,給予服務(wù)一定程度的自主控制2025-11-11
springboot工程jar包部署到云服務(wù)器的方法
這篇文章主要介紹了springboot工程jar包部署到云服務(wù)器的方法,本文通過實例介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧2018-05-05
BigDecimal divide除法除不盡報錯的問題及解決
這篇文章主要介紹了BigDecimal divide除法除不盡報錯的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
關(guān)于Lombok @Data注解:簡化Java代碼的魔法棒
Lombok庫通過@Data注解自動生成常見的樣板代碼如getter、setter、toString等,極大減少代碼量,提高開發(fā)效率,@Data注解集成了@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor等注解的功能2024-10-10
使用Spring Security和JWT實現(xiàn)安全認證機制
在現(xiàn)代 Web 應(yīng)用中,安全認證和授權(quán)是保障數(shù)據(jù)安全和用戶隱私的核心機制,Spring Security 是 Spring 框架下專為安全設(shè)計的模塊,具有高度的可配置性和擴展性,而 JWT則是當前流行的認證解決方案,所以本文介紹了如何使用Spring Security和JWT實現(xiàn)安全認證機制2024-11-11
SpringBoot使用Nacos配置中心的實現(xiàn)
這篇文章主要介紹了SpringBoot使用Nacos配置中心的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

