一、问题描述
当我们的服务接口需要通过HTTPS访问时,通过swagger可视化页面请求接口的时候,发起的是HTTP请求,导致请求无法到达后端,影响测试。
二、解决方法
1、将服务的地址添加到配置文件中
swagger:
server-list:
#本地环境
- 127.0.0.1:8007
#线上https环境
- https://www.xxx.com
2、在SpringDoc的配置类中注入配置信息,并设置服务列表
import java.util.ArrayList;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
import lombok.Data;
/**
* spring doc配置
*
* @author ldy
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "swagger")
public class SpringDocConfig {
/**
* 服务地址列表
*/
private List<String> serverList;
@Bean
public OpenAPI restfulOpenAPI() {
OpenAPI openAPI = new OpenAPI()
.info(new Info().title("你的项目名称").description("Spring Boot3 Restful API").version("V1.0.0")
.license(new License().name("访问SpringDoc官方网站").url("http://springdoc.org")))
.externalDocs(
new ExternalDocumentation().description("欢迎访问LDY的技术博客").url("https://blog.csdn.net/ldy1016"));
// 手动配置服务地址列表
if (serverList != null && serverList.size() > 0) {
List<Server> servers = new ArrayList<>();
for (String server : serverList) {
servers.add(new Server().url(server));
}
openAPI.servers(servers);
}
return openAPI;
}
}
三、运行效果
如图所示,在swagger页面的 Servers 列表中选择指定的接口根路径即可,接口根路径会根据你的选择自动变更。