Curl-d vs--数据二进制



使用[https://github.com/prometheus/pushgateway][1] 我们正试图把一个度量标准推给普罗米修斯。它似乎需要一种非常具体的格式的数据。

当他们做的例子卷曲时,它工作得很好

echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job

然而,使用-d选项进行curl操作失败,因为缺少行末/文件

curl -d 'some_metric 3.15n' http://pushgateway.example.org:9091/metrics/job/some_job

我试图理解行为上的差异,因为我相信两者都在执行POST命令,我需要通过"request.POST"方法在node.js中复制这个--data二进制选项,但我似乎只能复制curl-d选项,但它不起作用。

关于-d和-data二进制之间的区别以及在node.js中对-data二进制进行等效操作,有什么建议吗?

来自curl手册页:

--数据ascii

(HTTP(这只是-d,--data的别名。

-数据二进制

(HTTP(这完全按照指定发布数据,无需任何额外处理。

如果数据以字母@开头,则其余部分应为文件名。数据已过帐>除了换行符和回车符>gt;保留和转换永远不会完成。

与-d、--data一样,发送到服务器的默认内容类型是application/x-www-form->gt;url编码。如果希望服务器将数据视为任意二进制数据>然后将内容类型设置为八位位组流:-H";内容类型:应用程序/八位字节流;。

如果多次使用此选项,则第一个选项后面的选项将附加数据为>如-d,--data中所述。

使用@-将使curl从stdin读取文件名。

因此,基本上在您的第一个变体中,您发送一个名为"的二进制文件;some_metric 3.14";。在第二个例子中,您将发送一个ascii字符串";some_metric 3.15\n〃;。

如果您希望curl在发送前剥离新行,请使用--data-ascii-d选项:

echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job

-d(或--data(和--data-binary完全相同,如果您只是传递这样的正常值:

curl --data somekey=somevalue example.com

但是,如果您告诉curl通过传递--data @filename(或@-从stdin读取(从文件中读取值,如下所示:

curl --data @./some/path/to/a/file.txt example.com

则不同之处在于--data删除了文件中的所有nr字符,而--data-binary只是按原样发送文件。

相关内容

  • 没有找到相关文章

最新更新