【问题标题】:curl -d equivalent in Node.js http post requestnode.js http post请求中的curl -d等效项
【发布时间】:2014-07-01 20:49:58
【问题描述】:

我知道命令

curl -X POST -d 'some data to send' http://somehost.com/api 

可以在 Node.js 中使用类似的代码进行模拟

var http = require('http');
var post_data = 'some data to send',
    headers = {
        host: 'somehost.com',
        port: 80,
        method: 'POST',
        path: '/api',
        headers: {
            'Content-Length': Buffer.byteLength(post_data)
        }
    };

var request = http.request(headers, function(response) {
    response.on('data', function(d) {
        console.log(d);
    });
});
request.on('error', function(err) {
    console.log("An error ocurred!");
});
request.write(post_data));

request.end();

问题是因为我正在寻找 cURL 命令的等效节点

curl -d name="Myname" -d email="myemail@gmail.com" -X POST http://somehost.com/api

我该怎么做?

这是因为我想向Cherrypy server like this one 发出 POST 请求,但我无法完成请求。

编辑正如@mscdex 所说,解决方案是使用请求库:

我已经解决了请求库的问题。我的解决方案代码是

var request = require('request');

request.post('http://localhost:8080/api', {
  form: {
    nombre: 'orlando'
  }
}, function(err, res) {
  console.log(err, res);
});

谢谢!

【问题讨论】:

    标签: javascript node.js post curl


    【解决方案1】:

    您可以手动对其进行编码:

    var post_data = 'name=Myname&email=myemail@gmail.com';
    

    或者您可以使用像 request 这样的模块来为您处理它(如果您必须上传文件会变得特别好),因为它会为您处理数据转义和其他事情。

    【讨论】:

    • 你是对的。我已经解决了请求库的问题。我的解决方案代码是 var request = require('request'); request.post('localhost:8080/api', { form: { nombre: 'orlando' } }, function(err, res) { console.log(err, res); });谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 2015-05-13
    • 1970-01-01
    • 2017-05-20
    • 2016-08-11
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多