如何在Hasura的REST端点中获取原始请求体以配置无验证Webhook?
实现无验证Hasura Webhook REST端点
完全可以实现你要的需求,以下是具体操作步骤:
1. 确认GraphQL Mutation已配置完成
先确保Hasura中已经创建了myMutation这个mutation,它需接受payload: String!参数,并返回mutationResult字段。如果还未创建,可在Hasura控制台的Data或GraphQL页面完成定义(可关联自定义SQL函数或数据库操作)。
2. 创建指定的REST端点
在Hasura控制台的REST API页面操作:
- 点击Create REST Endpoint
- 设置端点路径为
/callback,最终完整路径即为http://localhost:8080/api/rest/callback - 选择请求方法为
POST - 在GraphQL Query区域填入你的mutation代码:
mutation MyMutation ($rawBody: String!) { myMutation(payload: $rawBody) { mutationResult } } - 配置请求变量映射:将
$rawBody的来源设置为Raw Body,Hasura会把整个请求体以字符串形式传入该变量,实现接收任意数据的需求
3. 关闭端点身份验证
默认Hasura REST端点要求认证,需关闭验证以允许无授权访问:
- 在该REST端点的配置页面,找到Permissions或Authentication设置项
- 勾选Allow unauthenticated access(允许未认证访问),此后任何POST请求均可直接访问该端点,无需携带认证令牌
4. 测试端点功能
用curl或Postman发送测试请求:
curl -X POST http://localhost:8080/api/rest/callback \ -H "Content-Type: application/json" \ -d '{"test": "sample data"}'
此时Hasura会把完整请求体字符串传给myMutation的payload参数,执行后返回mutationResult字段内容。无论请求体是JSON、纯文本还是表单数据,都会被完整以字符串形式传入,满足你接受任意数据的要求。
内容的提问来源于stack exchange,提问作者The Hoff
相关产品推荐
相关产品推荐

