【问题标题】:how to send a rest api with escape double quote?如何发送带有转义双引号的rest api?
【发布时间】:2022-11-06 14:21:34
【问题描述】:

我想向我的服务器发送一个rest api,并且数据的内容需要是一个带双引号的字符串:

data=mycontent
curl -X POST "$SERVER_ENDPOINT" \
      -H 'Authorization: Bearer '"$SERVER_TOKEN"'' \
      -H "Content-Type: application/json" \
      --data '{"type":"TYPE1","name":"NAME1","content":"\"'$mycontent'"\"}' \
      | jq;

但我得到一个无效的 json:

{
  "result": null,
  "success": false,
  "errors": [
    {
      "code": 9207,
      "message": "Content-type must be application/json."
    }
  ],
  "messages": []
}

如何格式化双引号字符串并通过rest api发送?

【问题讨论】:

标签: json bash


【解决方案1】:

你很亲密。你只是对你的报价感到困惑。

Authorization Header 末尾的'' 没用。它将零个字符附加到 -H 参数。

但主要问题是您提供的数据参数:

'{"type":"TYPE1","name":"NAME1","content":""'$mycontent'""}'

将由 shell 解析为三个字符串

  • {"type":"TYPE1","name":"NAME1","content":""
  • $mycontent 的内容未引用
  • ""} 如您所见,单引号中的 " 可能不是您想要的。

这应该解决它:

curl -X POST "$SERVER_ENDPOINT" 
      -H 'Authorization: Bearer '"$SERVER_TOKEN" 
      -H "Content-Type: application/json" 
      --data '{"type":"TYPE1","name":"NAME1","content":"'"$mycontent"'"}' 
      | jq;

调试提示:如果想查看引号如何扩展,请在 curl 命令前加上 echo(并删除 | jq)。

安全提示:确保$mycontent 不包含引号或反斜杠。它可能会弄乱你的 JSON。

【讨论】:

  • 谢谢@entropie,但我想在字符串中加上双引号。这意味着我将在服务器端看到“abcdef”而不是 abcdef 作为我的内容。
【解决方案2】:

$mycontent no meu caso $mycontent possui aspas invertidas e esta atrapalhando o json alguem sabe a solução?

【讨论】:

猜你喜欢
  • 2015-10-27
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
相关资源
最近更新 更多