shell - 执行 curl POST 时出现“无效凭据”
问题描述
我有以下格式的 curl 请求
curl -v -H "Content-Type:application/json" -H "x-user-id:xxx" -H "x-api-key:yyy" --data '{"logs":"'"${TEST_OUTPUT}"'","pass":"true | false"}' https://razeedash.one.qqq.cloud.com/api/v1/clusters/zzz/api/test_results
当我从我的 MAC 终端执行此操作时,这可以正常工作。但同样的命令抛出
13:49:26 {
13:49:26 "status": "error",
13:49:26 "message": "Invalid credentials"
13:49:26 }
我看到了这篇文章,但不确定如何发送没有花括号的 json 正文。我知道我们可以将它保存为 file.json 并将文件用作正文。但是由于某些原因在我的场景中无法实现
解决方案
通常,您应该避免尝试使用字符串插值来构建 JSON。使用类似jq
处理任何必要引用的工具。
jq -n --argson o "$TEST_OUTPUT" '{logs: $o, pass: "true | false"}' |
curl -v -H "Content-Type:application/json" \
-H "x-user-id:xxx" \
-H "x-api-key:yyy" \
--data @- \
https://razeedash.one.qqq.cloud.com/api/v1/clusters/zzz/api/test_results
但是,如果您可以像现在一样设法正确生成 JSON,则只需将jq
命令替换为echo
:
echo '{"logs": ...' | curl ...
to的@-
参数--data
说从标准输入中读取。
推荐阅读
- fortran - 现代 Fortran 等效于嵌套 DO 和 GO TO 共享的操作语句
- c# - 私有类成员是否应该使用自己的 ILogger 实例?
- reactjs - react-final-form 字段的获取请求 onChange 事件正在清除 autoComplete 字段
- json - 如何在 Flutter 中集成 MikroTik API?
- python - 在模型中编写查询
- java - 如何解决 dio https 状态 401 错误?
- python - 从第一个键中删除最后一个值
- strapi - “找不到模型用户权限。”
- javascript - 如何在反应项目中处理一个地方的axios错误?
- javascript - 为什么符号计算的属性名称不能在 VUE 数据中使用