我如何能使出站HTTP POST请求,与数据,在node.js?


当前回答

我喜欢超级代理的简单性(https://github.com/visionmedia/superagent)。节点和浏览器上的API相同。

;(async function() {
  var response = await superagent.post('http://127.0.0.1:8125/', {age: 2})
  console.log(response)
})

还有节点获取(https://www.npmjs.com/package/node-fetch),它有一个API来匹配从浏览器获取-然而这需要手动查询字符串编码,不能自动处理内容类型,或者超级代理所做的任何其他工作。

其他回答

你也可以使用Requestify,这是我为nodeJS +编写的一个非常酷而简单的HTTP客户端,它支持缓存。

只需要做以下几点:

    var requestify = require('requestify');

    requestify.post('http://example.com', {
        hello: 'world'
    })
    .then(function(response) {
        // Get the response body (JSON parsed or jQuery object for XMLs)
        response.getBody();
    });

我使用Restler和Needle用于生产目的。 它们都比本地httprequest强大得多。可以使用基本的身份验证、特殊的头条目甚至上传/下载文件进行请求。

至于post/get操作,它们也比使用httprequest的原始ajax调用简单得多。

needle.post('https://my.app.com/endpoint', {foo:'bar'}, 
    function(err, resp, body){
        console.log(body);
});

发布另一个axios的例子。Post请求,使用额外的配置选项和自定义头。

var postData = { 电子邮件:“test@test.com”, 密码:“密码” }; let axiosConfig = { 标题:{ “内容类型”:“application / json; charset = utf - 8”, “Access-Control-Allow-Origin”:“*”, } }; axios。post('http://<主机>:<端口>/<路径>',postData, axiosConfig) .then((res) => { console.log("RESPONSE RECEIVED: ", res); }) .catch((err) => { console.log("AXIOS ERROR: ", err); })

通过使用请求依赖性。

简单的解决方法:

 import request from 'request'
 var data = {
        "host":"127.1.1.1",
        "port":9008
    }

request.post( baseUrl + '/peers/connect',
        {
            json: data,  // your payload data placed here
            headers: {
                'X-Api-Key': 'dajzmj6gfuzmbfnhamsbuxivc', // if authentication needed
                'Content-Type': 'application/json' 
            }
        }, function (error, response, body) {
            if (error) {
                callback(error, null)
            } else {
                callback(error, response.body)
            }
        });

Request-Promise提供基于承诺的响应。 非2xx的HTTP响应代码将导致承诺被拒绝。这可以通过设置选项来覆盖。简单= false

var options = {
  method: 'POST',
  uri: 'http://api.posttestserver.com/post',
  body: {
  some: 'payload'
 },
  json: true // Automatically stringifies the body to JSON
};

rp(options)
.then(function (parsedBody) {
    // POST succeeded...
})
.catch(function (err) {
    // POST failed...
});