如何通过注解将SpringDoc OpenAPI Swagger默认协议从HTTP改HTTPS?
解决方案:通过注解强制Swagger使用HTTPS协议
核心思路
springdoc-openapi支持通过@OpenAPIDefinition结合@Server注解直接指定Swagger UI使用的协议与服务器地址,无需修改JSON/YAML配置文件,完全满足你基于注解实现协议转换的需求。
具体实现步骤
1. 全局固定HTTPS配置
在Spring Boot主启动类或专门的配置类上添加@OpenAPIDefinition注解,嵌套@Server指定HTTPS服务器:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import io.swagger.v3.oas.annotations.OpenAPIDefinition; import io.swagger.v3.oas.annotations.servers.Server; @SpringBootApplication @OpenAPIDefinition( servers = { @Server(url = "/", description = "HTTPS 服务器"), // 若需保留HTTP选项,可添加以下条目(可选) // @Server(url = "http://your-domain:8080", description = "HTTP 服务器") } ) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
2. 多环境动态适配(可选)
如果应用在不同环境(开发/测试/生产)使用不同协议,可通过Spring的@Value注入动态配置@Server的地址:
import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import io.swagger.v3.oas.annotations.OpenAPIDefinition; import io.swagger.v3.oas.annotations.servers.Server; @SpringBootApplication @OpenAPIDefinition( servers = { @Server(url = "${springdoc.server.url:/}", description = "当前环境服务器") } ) public class YourApplication { @Value("${springdoc.server.url:/}") private String serverUrl; public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
然后在对应环境的配置文件中设置地址:
# 生产环境 springdoc.server.url=https://your-production-domain.com # 开发环境(可选) # springdoc.server.url=http://localhost:8080
验证效果
启动应用后访问Swagger UI(默认地址为https://your-domain/swagger-ui.html),可看到顶部服务器地址已切换为HTTPS,接口测试时会自动使用HTTPS协议发送请求。
补充说明
- 该方案完全基于注解实现,无需编写任何OpenAPI的JSON/YAML配置文件。
- springdoc-openapi-ui 1.6.9版本完全兼容
@OpenAPIDefinition与@Server注解,无需升级依赖。
内容的提问来源于stack exchange,提问作者sonic boom
相关产品推荐
相关产品推荐

