Ubuntu环境下KrakenD访问/hello路径返回500错误问题求助
错误原因
你遇到的500错误和日志中的Error #01: invalid character 'H' looking for beginning of value是两个配置问题共同导致的:
- 全局返回编码默认解析为JSON:你的配置顶层设置了
"output_encoding": "json",KrakenD会默认把所有后端返回的响应都当做JSON格式解析。你的Quarkus应用/hello接口返回的是纯文本内容(首字符为H,符合错误描述),不是合法JSON结构,所以解析直接失败返回500。 - 后端host配置格式错误:你配置的backend的host末尾多了斜杠,KrakenD拼接url时会生成
http://域名//hello的错误路径,即使后端服务正常也可能无法正确请求。
另外你修改host为虚假地址后返回结果一致,是修改配置后没有重启KrakenD导致的,修改后的配置没有生效,KrakenD仍然使用之前的配置运行。
修复方案
你需要调整/hello对应的endpoint配置,覆盖全局的输出编码规则,同时修正host格式:
- 在/hello的endpoint配置中添加
"output_encoding": "no-op",让KrakenD直接透传后端返回的原始内容,不做JSON解析 - 去掉backend的host末尾的斜杠
- 保存配置后重启KrakenD服务生效
修改后的/hello endpoint配置示例:
{ "endpoint": "/hello", "output_encoding": "no-op", "extra_config": {}, "backend": [ { "url_pattern": "/hello", "method": "GET", "host": [ "http://getting-started36-getting-going.apps.bamboutos.hostname.us" ] } ] }
如果你的Quarkus应用返回的是纯文本格式,也可以将output_encoding设置为string,效果一致。
内容的提问来源于stack exchange,提问作者Billy Billy
相关产品推荐
相关产品推荐

