Swagger UI与OpenAPI规范的版本需严格对应:Swagger UI 3.x及以上版本支持OpenAPI 3.0+规范,Swagger UI 2.x仅支持Swagger 2.0规范。对于Spring Boot项目,需确保Swagger依赖版本与Spring Boot版本兼容(如Spring Boot 2.x常用springfox-swagger2:2.9.2+springfox-swagger-ui:2.9.2;Spring Boot 3.x需使用springdoc-openapi-starter-webmvc-ui等新版依赖)。可通过mvn dependency:tree或gradle dependencies命令检查依赖冲突,避免版本不匹配。
java -version确认Java版本,确保JAVA_HOME环境变量指向正确路径。nvm(Node Version Manager)安装高版本Node.js:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install 14 # 安装Node.js 14
SwaggerConfig.java),添加@Configuration、@EnableSwagger2(或@EnableOpenApi for SpringDoc)注解,并正确配置扫描范围:@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.controller")) // 指定扫描的包路径
.paths(PathSelectors.any())
.build();
}
}
/api),需在配置类中添加pathMapping,并在application.properties中设置对应路径:.pathMapping("/api") // 映射到/api路径
springfox.documentation.swagger-ui.base-path=/api
SecurityConfig中为Swagger静态资源放行:@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() // 放行Swagger资源
.anyRequest().authenticated();
}
通过Docker容器化Swagger服务,可确保在不同CentOS系统上运行环境一致。例如,使用Swagger官方Docker镜像:
docker run -d -p 8080:8080 -e SWAGGER_JSON=/app/swagger.json -v /path/to/swagger/json:/app swaggerapi/swagger-ui
其中:
-p 8080:8080:将容器端口映射到宿主机8080端口;-e SWAGGER_JSON:指定Swagger JSON文件路径;-v:挂载宿主机Swagger JSON目录到容器内。/),避免Windows反斜杠(\),可使用Path.join()(Node.js)或Paths.get()(Java)处理路径。dist目录、JSON文件)有适当读写权限:chmod -R 755 /path/to/swagger-ui # 赋予读写执行权限
chown -R apache:apache /path/to/swagger-ui # 修改所属用户(如Apache/Nginx用户)
Enforcing模式,可能阻止应用访问网络或文件,可临时关闭(setenforce 0)或修改/etc/selinux/config文件(SELINUX=permissive),然后重启系统。const ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json",
dom_id: '#swagger-ui',
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: "StandaloneLayout",
supportedSubmitMethods: ['get', 'post', 'put', 'delete'], // 指定支持的HTTP方法
// 启用兼容模式
requestInterceptor: (request) => {
request.headers['Accept'] = 'application/json';
return request;
}
});
通过以上方法,可解决CentOS环境下Swagger的常见兼容性问题。若问题仍存在,建议查看应用日志(如Spring Boot的application.log)或浏览器控制台错误信息,定位具体原因。