V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaohupro
V2EX  ›  Java

application.name 和 context-path 同名导致的问题

  •  
  •   xiaohupro ·
    hubianluanma · 210 天前 · 1088 次点击
    这是一个创建于 210 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天在搭建 spring cloud alibaba 架子,在添加好 gateway 模块后,我尝试使用它调用注册到 nacos 中的服务,这个子服务的 application.name 我设置为了 atlas-data ,context-path 也设置为了 atlas-data ,然后 Gateway 的配置如下:

    server:
      port: 8888
      servlet:
        context-path: /
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
        gateway:
          routes:
            - id: atlas-data
              uri: lb://atlas-data
              predicates:
                - Path=/atlas-data/**
          discovery:
            locator:
              enabled: true
              lower-case-service-id: true
      application:
        name: atlas-gateway
    
    
    

    然后我通过请求: http://localhost:8888/atlas-data/api/xxx 的一些接口都报 404 ,纳闷了很久,因为我没想到是因为同名导致的问题。

    然后我尝试将请求链接改为: http://localhost:8888/atlas-data/atlas-data/api/xxx 后发现可以请求。 我懵逼了……

    后来发现是 application.name 和 context-path 同名导致的,有小伙伴知道具体原因吗?为什么同名后写两次 context-path 才可以请求到。

    7 条回复    2024-05-09 11:11:48 +08:00
    jeesk
        1
    jeesk  
       210 天前
    还敢用 ali 的东西?
    xiaohupro
        2
    xiaohupro  
    OP
       209 天前
    @jeesk 哈哈哈,我以前一直用 SpringCloud+Consul 这种配合着来,这次 leader 让用 Spring Cloud Alibaba ,所以注册注册中心就用 nacos 了……
    cppc
        3
    cppc  
       209 天前 via iPhone
    我看这没什么问题呀,你意思是 app name 和 ctx path 不同就有不一样的行为?
    xiaohupro
        4
    xiaohupro  
    OP
       209 天前
    @cppc 这样配置启动不会报错,但是当通过 Gateway 访问其他服务时路径如果只用被访问服务的 context-path 会报 404 ,不一样就不会出现这个问题
    carpeDiemJll
        5
    carpeDiemJll  
       209 天前
    应该是有差异性的。如果有 context-path 的话,//ip:port+context-path 再加上你的接口路径。所以,http://localhost:8888/atlas-data/atlas-data/api/xxx ,会先匹配 context-path ,去掉 contex-path 后,再与 predicates 匹配,找到对应的 route ,然后请求到具体的接口
    litchinn
        6
    litchinn  
       208 天前
    carpeDiemJll
        7
    carpeDiemJll  
       208 天前
    @litchinn 不用加,直接 route 路由也可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1577 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:01 · PVG 01:01 · LAX 09:01 · JFK 12:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.