业务服务中设置了 server.servlet.context-path 导致 gateway代理出问题
spring:cloud:gateway:routes:- id: server-useruri: lb://server-userpredicates:- Path=/api/user/**
- 原来的 user 服务中没有 配置 server.servlet.context-path 一切正常
 - 配置了 server.servlet.context-path   之后接口访问不到了
{"code": 404,"message": "Failed to handle request [GET http://localhost:200/api/user/user/login?userName=tn]: 404 NOT_FOUND","data": null,"ts": 1597483157725,"success": false}
 
解决方法
- 所有业务服务不再配置 contextPath (推荐)
 更改配置文件,所有业务的 contextPath 路径层数最好一样 (主要是因为要去适配swagger,如果接口文档时手写的就没有这么麻烦,直接 Path=/api/server-user/ 改为 Path=/api/server-user/conttextPath/ 就行了)
设置 contextPath 跟 spring.application.name 设置
server:port: 1003 #端口servlet:context-path: /userspring:application:name: server-user
修改gateway的路由 注意: - Path= context-path 且 - StripPrefix=0(统一设置,如果业务服务的context-path不一样,就得在rotet里单独设置
filters: - StripPrefix=n) ```yaml spring: cloud: gateway: routes:- id: server-user
uri: lb://server-user
predicates:
- Path=/api/server-user/** ##这样主要是为了适配swagger 要不然swagger的测试功能无法使用,因为接口路径少了一部分
- Path=/user/**
 
 - id: server-basic
uri: lb://server-basic
predicates:
- Path=/api/server-basic/** ##这样主要是为了适配swagger 要不然swagger的测试功能无法使用,因为接口路径少了一部分
 - StripPrefix=0
 - name: AuthFilter
args:
 excludePatterns:  #不做权限校验的路径
- /server-user/userInfo/login
 - /server-basic/openFeign/test01
 
 
- id: server-user
uri: lb://server-user
predicates:
 
```
