Hasura中如何移除Action响应中的action_name键?
Hasura响应转换提取Action响应Body的问题解决
问题场景
使用Hasura的响应转换功能时,需要从Action的响应中提取内层的response_body,但Action返回的响应结构如下:
{ "action_name": { // response_body具体内容 } }
期望最终返回的结果是直接返回内层的response_body,不带外层的action_name键:
{ // response_body具体内容 }
使用{{$body}}会保留外层的action_name结构,尝试用{{$body.action_name}}提取时,触发如下错误:
{ "code": "unexpected", "error": "响应转换失败", "internal": [ { "error_code": "属性错误", "message": "'Object'没有属性'action_name'.", "source_position": { "end_column": 17, "end_line": 0, "start_column": 1, "start_line": 0 } } ], "path": "$" }
解决方法
方法1:使用Action的真实名称替换占位符
action_name是你定义的Action的实际名称(比如你的Action叫get_user_info,则响应里的键是get_user_info),将响应转换表达式中的action_name替换为真实的Action名称即可。例如:
{{$body.get_user_info}}
方法2:动态提取唯一顶层键的值
如果不想硬编码Action名称(比如需要复用转换规则的场景),可以用以下两种方式动态提取:
- Handlebars遍历语法:利用Action响应只有一个顶层键的特性,遍历并返回值:
{{#each $body}}{{this}}{{/each}} - JSONPath语法:直接匹配所有顶层键的值:
{{$body.*}}
内容的提问来源于stack exchange,提问作者Punit Sureka
相关产品推荐
相关产品推荐

