我是 KrakenD 的新手。我尝试将此 API 网关配置为不修改来自后端的响应。以下是 ma 配置的摘录:
"endpoint": "/mycompany/someservice/{id}",
"output_encoding": "no-op",
"backend": [{
"url_pattern": "/someservice/{id}",
"host": [
"http://host-in-our-company:8080"
],
"encoding": "no-op"
}
]
}
在这个 GET 请求中,我们询问了一些实体。当实体不存在时,我们的 Spring 应用程序会抛出异常并返回状态 404。没有 KrakenD 的原始响应如下所示:
"timestamp": "2021-10-04T14:47:58.918+00:00",
"status": 404,
"error": "Not Found",
"path": "/mycompany/someservice/115_EXIST"
}
但是当我使用 KrakenD 时,响应如下:
{
"cause": "Entity with id 115 cannot be found.",
"status": "NOT_FOUND"
}
这对应于找不到实体时引发的异常:
ERROR com.my.company.exception.GlobalRestExceptionHandler - Error caught: Entity with id 115 cannot be found.
如何配置 KrakenD 以实现这种行为?或者也许我应该以某种方式改变我们后端的实现?
提前感谢您的帮助