You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud Config Server添加前缀后出现404问题求助

解决Spring Cloud Config Server与自定义REST控制器共存的问题

看起来你遇到的核心问题是配置服务的路由与自定义API路由冲突,加上前缀后又没搞对正确的请求路径,导致404。我来帮你一步步解决:

问题根源分析

  1. 最初没加spring.cloud.config.server.prefix时,Config Server会拦截所有根路径请求,把你的Swagger控制器请求当成配置文件请求处理。
  2. 加了prefix=/config后,Config Server的所有配置端点都挂载到/config路径下,但你没搞对配置请求的正确格式,同时自定义控制器的路径也没和配置路径做好隔离,所以出现404。

解决方案步骤

1. 明确配置服务的正确请求格式

当你设置spring.cloud.config.server.prefix=/config后,Config Server的标准请求格式为:

{context-path}/config/{application}/{profile}[/{label}]

结合你的配置(默认profile是prod),正确的配置请求应该是:

# 获取app_a的prod环境配置
curl -X GET http://localhost:8082/ms-configuration/config/app_a/prod

如果要使用默认profile,也可以简化为:

curl -X GET http://localhost:8082/ms-configuration/config/app_a

(注:这里的/ms-configuration应该是你设置的server.servlet.context-path,如果没设置的话直接去掉即可)

2. 隔离自定义REST控制器的路径

为了让Swagger等自定义API不被Config Server拦截,给你的控制器单独设置一个前缀,比如/api。示例代码如下:

@RestController
@RequestMapping("/api") // 给自定义API统一加前缀
public class SwaggerController {

    @GetMapping("/swagger")
    public String swaggerUi() {
        // 这里写你的Swagger逻辑,比如跳转Swagger UI页面
        return "Swagger UI endpoint";
    }

    // 其他自定义API接口也可以遵循同样的前缀规则
}

此时,你的Swagger请求路径应该是:

curl -X GET http://localhost:8082/ms-configuration/api/swagger/

3. 优化配置避免冲突

另外,建议调整你的端点配置,避免管理端点和业务路径冲突:

# 把管理端点的基础路径改成/actuator,避免和配置服务/自定义API路径重叠
management.endpoints.web.base-path=/actuator
management.endpoints.web.exposure.include=health,info,backup,restore

4. 验证配置生效

重启服务后,分别测试:

  • 配置服务请求:curl http://localhost:8082/ms-configuration/config/app_a/prod —— 应该返回对应的配置内容
  • 自定义API请求:curl http://localhost:8082/ms-configuration/api/swagger —— 应该返回你的Swagger相关响应

额外提示

如果不想给自定义API加前缀,也可以通过调整Spring MVC的路由优先级实现:给你的自定义控制器添加@Order(Ordered.HIGHEST_PRECEDENCE)注解,让它的路由先被匹配。不过这种方式不如前缀隔离清晰,容易出现后续路径冲突问题,更推荐用前缀隔离的方案。

内容的提问来源于stack exchange,提问作者Roy Tal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 08:57:43