从JHipster API Gateway

时间:2016-08-11 13:03:35

标签: spring jhipster

我正在使用通过JHipster(Spring Boot,Zuul Proxy,Ribbon ...)创建的微服务架构。我有2个微服务和一个网关(当然还有一个注册表)。

从我的微服务发送HTTP错误时遇到问题。网关似乎忽略了微服务的响应,并仅使用错误代码生成新的响应。

示例:

我的请求在我的微服务中生成HTTP 404。如果直接请求微服务我有以下响应体:

{
    "code": "DEVICE_NOT_FOUND",
    "message": "Gateway '12345678' unknown"
}

如果我请求网关(转移到微服务),我现在拥有以下正文而不是服务生成的正文:

{
    "timestamp": "2016-08-11T12:50:57.432+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available"
}

来自网关的正文不包含来自licroservice错误正文的任何​​数据......

如果我理解,当网关从网络摄像头获取错误时,它会调用生成的“/ error”控制器来创建响应。我试图实现我自己的/错误控制器,因为我无法获得原始的身体。我还尝试添加一个@ControllerAdvice控制器但在网关中没有返回异常,它只是重定向到/错误控制器

我错过了什么吗? 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

@GaëlMarziou好的,我发现它是如何工作的。

有一个Zuul过滤器(org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter)捕获微服务响应体并调用ErrorController生成自己的一个。我创建了一个Zuul过滤器(show the solution here)并覆盖了whitelabel错误控制器(solution here),现在我的网关中有微服务的响应体。

感谢您的帮助。