@FeignClient 必须指定 url 才能找到服务,为什么?

2018-02-22 09:52:08 +08:00
 youngs
@FeignClient(name = "passport-service", url = "http://100.66.178.33:8089/passport")
public interface PassportServiceApi {
@RequestMapping(value = "/api/auths/token/{username}", method = RequestMethod.GET)
   AbstractResult getTokenByUsername(@PathVariable("username") String username);
}
上面的代码为什么必须制定 url 才能找到服务?如果不指定 url 就报 404 的问题,不指定 url 时跟踪代码发现最后生成的地址是 /api/auths/token/,并没有加上域名。
6492 次点击
所在节点    Java
12 条回复
CYKun
2018-02-22 10:52:08 +08:00
不要把 ip 贴出来啊
LeeSeoung
2018-02-22 10:54:02 +08:00
服务中心配了?
jych1224
2018-02-22 11:50:26 +08:00
不是一定要 URL,可以使用注册中心,使用服务名代替
youngs
2018-02-22 14:50:49 +08:00
@CYKun 内网本机 IP 风险不大
youngs
2018-02-22 14:55:04 +08:00
@jych1224 passport-service 就是使用服务名 单独使用报 404
sghcel
2018-02-22 16:14:31 +08:00
没有使用服务配置中心吧
youngs
2018-02-22 17:31:51 +08:00
@sghcel 使用的 Eureka
jameslan
2018-02-23 06:53:12 +08:00
检查服务注册好了?
HuHui
2018-02-23 11:10:53 +08:00
@jameslan 如果写 url 的话,不需要去服务注册查找吧
HuHui
2018-02-23 11:11:52 +08:00
@jameslan 嗯,需要。看错题主的问题了。
Narcissu5
2018-02-23 15:48:42 +08:00
用 EurekaClient 或者 DiscoveryClient 的 getInstance 方法,看下能不能得到地址,可能是服务注册发现没有配置好。比如少了一些 Enable
shawshi
2018-02-24 10:03:52 +08:00
先判断注册中心有没有这两个服务?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431568

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX