API 网关(Zuul)合并两个微服务响应

API gateway (Zuul) merging two micro service response

我有两个微服务,用户微服务和订单微服务。

用户微服务return用户详情和订单微服务return用户订单详情

http://localhost:8080/microservice1/getuser

{"id":"100","name":"test"}

http://localhost:8081/microservice2/getorders

{"userid":"100","orders":{"orderid":"5001","productname":"mobilephone"}}

我正在使用 Spring 云 Zuul 作为 API 网关,它将请求路由到每个微服务。

http://localhost:9090/api/microservice1/getuser

http://localhost:9090/api/microservice2/getorders

现在 UI,我需要调用两个端点

他们有没有办法合并微服务的响应,比如 {"id":"100","name":"test","orders":{"orderid":"5001","productname":"mobilephone"}}

这样客户端只需要调用一个端点http://localhost:9090/api/getdetail

我们如何在 API 网关级别实现这一点?

Zuul 不应该用于聚合响应,您可以创建编排微服务服务并在内部使用 restTemplate 获取所有响应并根据需要聚合。

保持 Zuul 无状态,网关不应该有任何逻辑或有状态。