一、问题描述
当我们的服务接口需要通过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;@Beanpublic 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 列表中选择指定的接口根路径即可,接口根路径会根据你的选择自动变更。