假设我有一个 HTTP POST 方法,它简单地回显请求的主体,我像这样 curl 它:
curl -X POST -d "test non-binary data" "https://endpoint/path/to/resource"
正如预期的那样,这将导致以下回调:
"test non-binary data"
现在假设我改为像这样以二进制形式传递此数据:
curl -X POST --data-binary "test binary data" "https://endpoint/path/to/resource"
这将给我以下内容:
"dGVzdCBiaW5hcnkgZGF0YQ=="
但我可以让我的 API 解码 base64 数据并将其解释为 ASCII 以返回以下内容:
"test binary data"
正如预期的那样,这与非二进制请求相同。那么,在结果相同的情况下,传递二进制请求主体与传递非二进制请求主体之间到底有什么区别?使用二进制数据有什么好处吗?如果是这样,当我想改用二进制数据时,有哪些示例?
最佳答案
根据curl man page :
--data-binary
(HTTP) This posts data exactly as specified with no extra processing whatsoever.
If you start the data with the letter @, the rest should be a filename. Data is posted in a similar manner as -d, --data does, except that newlines and carriage returns are preserved and conversions are never done.
If this option is used several times, the ones following the first will append data as described in -d, --data.
您不应使用 --data-binary
选项接收 base64 编码数据。如果你这样做,它与 curl
无关。
直奔问题 - 我看到的唯一好处是 curl 不会处理传递的数据。如果您需要保留换行符等,那么使用它是有意义的。
关于http - 将二进制数据用于 HTTP POST 请求有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45337203/