gateway问题

来源:10-4 核心概念

慕虎146535

2019-11-02

大目老师,我现在遇到一个问题
这是我的网关配置
ateway:
discovery:
locator:
# 让gateway通过服务发现组件找到其他的微服务
enabled: true
routes:
- id: user_route
uri: lb://user-center
predicates:
- Path=/users/**

然后user-center controller的@RequestMapping("/api/service/user")是这样定义的,然后方法是test
然后通过 http://localhost:8040/users/api/service/user/test 访问是404
但是通过http://localhost:8040/user-center/api/service/user/test 是可以访问的,
http://localhost:8040/users/api/service/user/test 404 是什么原因造成的

写回答

1回答

大目

2019-11-02

您好,这个问题在路由谓词工厂一节有讲。课程配套手记

https://www.imooc.com/article/290804

路由配置的两种形式 一段也有写到。

按照您的配置

Path=/users/**

指的是:访问Gateway的/users/** 会转发到user-center微服务的/users/** 

但你这个微服务根本没有这样的API,所以会404。


而,之所以用user-center/api/xxxx可以访问,是因为Gateway的

xxxx.locator.enabled=true

提供的。这个配置提供了基于约定的转发规则:访问Gateway的/服务名称/** 会转发到指定服务的/**


0
5
慕虎146535
非常感谢!
2019-11-02
共5条回复

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3054 学习 · 1322 问题

查看课程