首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KrakenD -阻止更改响应

KrakenD -阻止更改响应
EN

Stack Overflow用户
提问于 2021-10-04 15:22:48
回答 1查看 149关注 0票数 0

我是KrakenD的新手。我尝试将此API网关配置为不修改来自后端的响应。以下是ma配置的摘录:

代码语言:javascript
复制
"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应用程序抛出and异常,并返回状态404。不带KrakenD的原始响应如下所示:

代码语言:javascript
复制
    "timestamp": "2021-10-04T14:47:58.918+00:00",
    "status": 404,
    "error": "Not Found",
    "path": "/mycompany/someservice/115_EXIST"
}

但是当我使用KrakenD时,响应如下:

代码语言:javascript
复制
{
    "cause": "Entity with id 115 cannot be found.",
    "status": "NOT_FOUND"
}

这对应于找不到实体时抛出的异常:

代码语言:javascript
复制
ERROR com.my.company.exception.GlobalRestExceptionHandler - Error caught: Entity with id 115 cannot be found.

如何配置KrakenD来实现此行为?或者也许我应该以某种方式改变我们后端的实现?

提前感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2021-10-05 13:18:10

no-op编码不会对后端响应执行任何修改。您看到的响应是来自后台的实际响应,没有任何来自KrakenD的干预。

请注意,通过KrakenD消费内容并不等同于直接消费后端,因为KrakenD不会将任何头部、查询参数或cookie传递给后端,除非您这样做。例如,您的后端可能期望客户端发送一个Accept标头,但除非您在配置中转发它,否则它不会到达后端(请参阅文档中的headers_to_pass )。这是一个导致后端响应不同的常见问题的示例。在后端代码中查看何时触发此错误消息,并尝试使用curl直接使用后端

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69438532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档