curl GET 发送 JSON 作为 HTTP 参数

curl GET send JSON as HTTP parameter

我正在尝试使用 curl 从 bash 脚本向 AWS SQS 发送消息。我以此 article 作为基础。因此,我正在构建以下请求: https://sqs.eu-west-1.amazonaws.com/[MY_QUEUE_NAME]?Action=SendMessage&MessageBody=[MY_MESSAGE]

这里开始最复杂的。每当我将纯文本用作 MY_MESSAGE 时,一切正常,消息会传送到 SQS,但我想发送一个 JSON: {"mahine": "SOME_MACHINE", "user": "SOME_USER"}

我还没有找到在 GET 请求中使用花括号作为 HTTP 参数的方法。如何让 {} 符号被识别为简单文本?

真的,您应该将它添加到 POST 中的请求正文中,如下所示:

curl -H "Content-Type: application/json" \ -X POST -d '{"machine":"SOME_MACHINE","user":"SOME_USER"}' \ https://sqs.eu-west-1.amazonaws.com/[MY_QUEUE_NAME]?Action=SendMessage

然而,您可以将 JSON 添加到 URL 中的 GET 请求,但您需要先 encode 使用百分比转义(即 %20 转义 space). {} 在 URL 中无效,需要编码为 %7B%7D 才能接受。

您可以使用此 URL encoder 将您的 JSON 编码为 URL 可接受的格式。