前言
使用gateway过程中,因为在gateway中加入了一个标注@RestController的类,导致请求直接由gateway中的@RestController的类处理并返回。花费了几小时才发现问题原因,特此记录
问题
以gateway作为网关转发请求得到的响应,所有字段都为null且不为设定的通用返回格式
//网关的地址
请求路径:localhost:8080/user/get?id=1
直接调用服务接口返回值正常
//服务的地址
请求路径:localhost:9000/user/get?id=1
原因
gateway中存在控制器类
@RestController
public interface UserService {@GetMapping("/user/get")SysUser get(@RequestParam("id") String id);
}
此时请求该路径(localhost:网关端口/user/get?id=1)并不会按照配置文件中的配置路径进行转发,而是由此控制器直接处理并返回。
总结
在gateway不应出现控制器类,应避免在gateway的类上标注@Controller。