Curl -d vs --data-binary
Using this [https://github.com/prometheus/pushgateway][1] we are trying to push one metric to prometheus. It seems to require the data in a very specific format.
It works fine when doing their example curl of
echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job
Yet doing a curl with -d option fails as missing end of line/file
curl -d 'some_metric 3.15n' http://pushgateway.example.org:9091/metrics/job/some_job
I'm trying to understand the difference in behaviour since I believe both are doing POST commands and I need to replicate this --data-binary option in node.js via "request.post" method but I seem to only be able to replicate the curl -d option which doesn't work.
Any suggestions on hints on what the difference is between -d and --data-binary and to do the equivalent to --data-binary from within node.js?
node.js curl prometheus
add a comment |
Using this [https://github.com/prometheus/pushgateway][1] we are trying to push one metric to prometheus. It seems to require the data in a very specific format.
It works fine when doing their example curl of
echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job
Yet doing a curl with -d option fails as missing end of line/file
curl -d 'some_metric 3.15n' http://pushgateway.example.org:9091/metrics/job/some_job
I'm trying to understand the difference in behaviour since I believe both are doing POST commands and I need to replicate this --data-binary option in node.js via "request.post" method but I seem to only be able to replicate the curl -d option which doesn't work.
Any suggestions on hints on what the difference is between -d and --data-binary and to do the equivalent to --data-binary from within node.js?
node.js curl prometheus
why are you combining questions here. Are you trying to understand the behaviour ofcurl
command with its different flags? or are you trying to send a NodeJS POST request to push metrics to push Gateway?
– Andres Leon Rangel
yesterday
add a comment |
Using this [https://github.com/prometheus/pushgateway][1] we are trying to push one metric to prometheus. It seems to require the data in a very specific format.
It works fine when doing their example curl of
echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job
Yet doing a curl with -d option fails as missing end of line/file
curl -d 'some_metric 3.15n' http://pushgateway.example.org:9091/metrics/job/some_job
I'm trying to understand the difference in behaviour since I believe both are doing POST commands and I need to replicate this --data-binary option in node.js via "request.post" method but I seem to only be able to replicate the curl -d option which doesn't work.
Any suggestions on hints on what the difference is between -d and --data-binary and to do the equivalent to --data-binary from within node.js?
node.js curl prometheus
Using this [https://github.com/prometheus/pushgateway][1] we are trying to push one metric to prometheus. It seems to require the data in a very specific format.
It works fine when doing their example curl of
echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job
Yet doing a curl with -d option fails as missing end of line/file
curl -d 'some_metric 3.15n' http://pushgateway.example.org:9091/metrics/job/some_job
I'm trying to understand the difference in behaviour since I believe both are doing POST commands and I need to replicate this --data-binary option in node.js via "request.post" method but I seem to only be able to replicate the curl -d option which doesn't work.
Any suggestions on hints on what the difference is between -d and --data-binary and to do the equivalent to --data-binary from within node.js?
node.js curl prometheus
node.js curl prometheus
asked Nov 15 '18 at 11:53
sradforthsradforth
1,9231730
1,9231730
why are you combining questions here. Are you trying to understand the behaviour ofcurl
command with its different flags? or are you trying to send a NodeJS POST request to push metrics to push Gateway?
– Andres Leon Rangel
yesterday
add a comment |
why are you combining questions here. Are you trying to understand the behaviour ofcurl
command with its different flags? or are you trying to send a NodeJS POST request to push metrics to push Gateway?
– Andres Leon Rangel
yesterday
why are you combining questions here. Are you trying to understand the behaviour of
curl
command with its different flags? or are you trying to send a NodeJS POST request to push metrics to push Gateway?– Andres Leon Rangel
yesterday
why are you combining questions here. Are you trying to understand the behaviour of
curl
command with its different flags? or are you trying to send a NodeJS POST request to push metrics to push Gateway?– Andres Leon Rangel
yesterday
add a comment |
1 Answer
1
active
oldest
votes
From curl man page:
--data-ascii
(HTTP) This is just an alias for -d, --data.
--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.
Like -d, --data the default content-type sent to the server is application/x-www-form-> > urlencoded. If you want the data to be treated as arbitrary binary data by the server > then set the content-type to octet-stream: -H "Content-Type: application/octet-stream".
If this option is used several times, the ones following the first will append data as > described in -d, --data.
Using @-
will make curl read the filename from stdin.
So, basically in your first variant you send a binary file named "some_metric 3.14".
In the second one, you're sending an ascii string "some_metric 3.15n".
If you want curl to strip new lines before sending, use --data-ascii or -d option:
echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job
Many thanks for your detailed response. Any idea how I can get node.js to POST data that matches the --data-binary curl command? It seems it should just be a case of adding a n to the data it is POSTing? The weird thing seems that the n approach didn't seem to work hence why I'm curious what else it does differently.
– sradforth
Nov 15 '18 at 12:24
@sradforth, I'm not quite familiar withNodeJS
but you can take a look here: stackoverflow.com/questions/38030484/… Also, it'd be helpful if you send a file you're trying to send and a piece of code that does the file upload
– StasKolodyuk
Nov 15 '18 at 12:41
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53318936%2fcurl-d-vs-data-binary%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
From curl man page:
--data-ascii
(HTTP) This is just an alias for -d, --data.
--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.
Like -d, --data the default content-type sent to the server is application/x-www-form-> > urlencoded. If you want the data to be treated as arbitrary binary data by the server > then set the content-type to octet-stream: -H "Content-Type: application/octet-stream".
If this option is used several times, the ones following the first will append data as > described in -d, --data.
Using @-
will make curl read the filename from stdin.
So, basically in your first variant you send a binary file named "some_metric 3.14".
In the second one, you're sending an ascii string "some_metric 3.15n".
If you want curl to strip new lines before sending, use --data-ascii or -d option:
echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job
Many thanks for your detailed response. Any idea how I can get node.js to POST data that matches the --data-binary curl command? It seems it should just be a case of adding a n to the data it is POSTing? The weird thing seems that the n approach didn't seem to work hence why I'm curious what else it does differently.
– sradforth
Nov 15 '18 at 12:24
@sradforth, I'm not quite familiar withNodeJS
but you can take a look here: stackoverflow.com/questions/38030484/… Also, it'd be helpful if you send a file you're trying to send and a piece of code that does the file upload
– StasKolodyuk
Nov 15 '18 at 12:41
add a comment |
From curl man page:
--data-ascii
(HTTP) This is just an alias for -d, --data.
--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.
Like -d, --data the default content-type sent to the server is application/x-www-form-> > urlencoded. If you want the data to be treated as arbitrary binary data by the server > then set the content-type to octet-stream: -H "Content-Type: application/octet-stream".
If this option is used several times, the ones following the first will append data as > described in -d, --data.
Using @-
will make curl read the filename from stdin.
So, basically in your first variant you send a binary file named "some_metric 3.14".
In the second one, you're sending an ascii string "some_metric 3.15n".
If you want curl to strip new lines before sending, use --data-ascii or -d option:
echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job
Many thanks for your detailed response. Any idea how I can get node.js to POST data that matches the --data-binary curl command? It seems it should just be a case of adding a n to the data it is POSTing? The weird thing seems that the n approach didn't seem to work hence why I'm curious what else it does differently.
– sradforth
Nov 15 '18 at 12:24
@sradforth, I'm not quite familiar withNodeJS
but you can take a look here: stackoverflow.com/questions/38030484/… Also, it'd be helpful if you send a file you're trying to send and a piece of code that does the file upload
– StasKolodyuk
Nov 15 '18 at 12:41
add a comment |
From curl man page:
--data-ascii
(HTTP) This is just an alias for -d, --data.
--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.
Like -d, --data the default content-type sent to the server is application/x-www-form-> > urlencoded. If you want the data to be treated as arbitrary binary data by the server > then set the content-type to octet-stream: -H "Content-Type: application/octet-stream".
If this option is used several times, the ones following the first will append data as > described in -d, --data.
Using @-
will make curl read the filename from stdin.
So, basically in your first variant you send a binary file named "some_metric 3.14".
In the second one, you're sending an ascii string "some_metric 3.15n".
If you want curl to strip new lines before sending, use --data-ascii or -d option:
echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job
From curl man page:
--data-ascii
(HTTP) This is just an alias for -d, --data.
--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.
Like -d, --data the default content-type sent to the server is application/x-www-form-> > urlencoded. If you want the data to be treated as arbitrary binary data by the server > then set the content-type to octet-stream: -H "Content-Type: application/octet-stream".
If this option is used several times, the ones following the first will append data as > described in -d, --data.
Using @-
will make curl read the filename from stdin.
So, basically in your first variant you send a binary file named "some_metric 3.14".
In the second one, you're sending an ascii string "some_metric 3.15n".
If you want curl to strip new lines before sending, use --data-ascii or -d option:
echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job
answered Nov 15 '18 at 12:11
StasKolodyukStasKolodyuk
1,5661526
1,5661526
Many thanks for your detailed response. Any idea how I can get node.js to POST data that matches the --data-binary curl command? It seems it should just be a case of adding a n to the data it is POSTing? The weird thing seems that the n approach didn't seem to work hence why I'm curious what else it does differently.
– sradforth
Nov 15 '18 at 12:24
@sradforth, I'm not quite familiar withNodeJS
but you can take a look here: stackoverflow.com/questions/38030484/… Also, it'd be helpful if you send a file you're trying to send and a piece of code that does the file upload
– StasKolodyuk
Nov 15 '18 at 12:41
add a comment |
Many thanks for your detailed response. Any idea how I can get node.js to POST data that matches the --data-binary curl command? It seems it should just be a case of adding a n to the data it is POSTing? The weird thing seems that the n approach didn't seem to work hence why I'm curious what else it does differently.
– sradforth
Nov 15 '18 at 12:24
@sradforth, I'm not quite familiar withNodeJS
but you can take a look here: stackoverflow.com/questions/38030484/… Also, it'd be helpful if you send a file you're trying to send and a piece of code that does the file upload
– StasKolodyuk
Nov 15 '18 at 12:41
Many thanks for your detailed response. Any idea how I can get node.js to POST data that matches the --data-binary curl command? It seems it should just be a case of adding a n to the data it is POSTing? The weird thing seems that the n approach didn't seem to work hence why I'm curious what else it does differently.
– sradforth
Nov 15 '18 at 12:24
Many thanks for your detailed response. Any idea how I can get node.js to POST data that matches the --data-binary curl command? It seems it should just be a case of adding a n to the data it is POSTing? The weird thing seems that the n approach didn't seem to work hence why I'm curious what else it does differently.
– sradforth
Nov 15 '18 at 12:24
@sradforth, I'm not quite familiar with
NodeJS
but you can take a look here: stackoverflow.com/questions/38030484/… Also, it'd be helpful if you send a file you're trying to send and a piece of code that does the file upload– StasKolodyuk
Nov 15 '18 at 12:41
@sradforth, I'm not quite familiar with
NodeJS
but you can take a look here: stackoverflow.com/questions/38030484/… Also, it'd be helpful if you send a file you're trying to send and a piece of code that does the file upload– StasKolodyuk
Nov 15 '18 at 12:41
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53318936%2fcurl-d-vs-data-binary%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
why are you combining questions here. Are you trying to understand the behaviour of
curl
command with its different flags? or are you trying to send a NodeJS POST request to push metrics to push Gateway?– Andres Leon Rangel
yesterday