在Retool中调用Sanity HTTP Query接口遇未知参数错误求助
解决Sanity GROQ GET请求在Retool中的参数编码错误问题
你碰到的错误根源在于:GET请求URL里的GROQ查询包含未编码的空格和特殊字符,Sanity API误把date(带空格)当成了一个独立的未知查询参数,而非GROQ语句的一部分。
解决方案步骤
1. 对GROQ查询做URL编码
GROQ里的空格、&、=这类字符在GET请求的URL中必须编码。你需要用encodeURIComponent()包裹整个查询字符串。
原始GROQ查询:
*[ _type == 'mytype' && date == '2024-01-17']
编码后会变成:
%5B+_type+%3D%3D+'mytype'+%26%26+date+%3D%3D+'2024-01-17'%5D
2. 在Retool中实现编码的两种方法
方法一:直接在URL中使用Retool内置函数
在Retool的HTTP请求配置里,把URL的query部分改成动态值,用Retool自带的encodeURIComponent()处理查询语句,示例:
https://<projectId>.apicdn.sanity.io/<YYYY-MM-DD>/data/query/<dataset>?query={{encodeURIComponent("*[ _type == 'mytype' && date == '2024-01-17']")}}
Retool会自动帮你完成编码,避免字符解析错误。
方法二:通过查询参数面板设置
在Retool HTTP请求的「Query Parameters」面板里,添加一个键为query的参数,值填写:
{{encodeURIComponent("*[ _type == 'mytype' && date == '2024-01-17']")}}
这种方式不用手动拼接URL,更不容易出错,Retool会自动处理编码。
3. 验证请求
发送请求后,查看Retool的请求详情,确认query参数的值已经被正确编码,没有未转义的空格或特殊字符。这时Sanity API就能正确识别整个GROQ查询,不会再抛出未知参数的错误。
内容的提问来源于stack exchange,提问作者AkbarB
相关产品推荐
相关产品推荐

