繁体   English   中英

向 Node.JS 中的 HTTP POST 请求添加参数

[英]Add parameters to HTTP POST request in Node.JS

我知道使用 Node.js 发送简单 HTTP 请求的方法如下:

var http = require('http');

var options = {
  host: 'example.com',
  port: 80,
  path: '/foo.html'
};

http.get(options, function(resp){
  resp.on('data', function(chunk){
    //do something with chunk
  });
}).on("error", function(e){
  console.log("Got error: " + e.message);
});

我想知道如何在POST请求的正文中嵌入参数以及如何从接收器模块中捕获它们。

您介意使用请求库吗? 发送帖子请求变得如此简单

var options = {
url: 'https://someurl.com',
'method': 'POST',
 'body': {"key":"val"} 

};

 request(options,function(error,response,body){
   //do what you want with this callback functon
});

请求库在request.post方法中也有一个用于发布的快捷方式,您可以在其中传递URL来进行发布请求,并发送数据到该URL。

根据评论进行编辑

要“捕获”发布请求,最好使用某种框架。 由于快递是最受欢迎的快递,我将举例说明快递。 如果您不熟悉Express,建议您阅读作者本人的入门指南

您需要做的就是创建一个发布路由,回调函数将包含发布到该URL的数据。

app.post('/name-of-route',function(req,res){
 console.log(req.body);
//req.body contains the post data that you posted to the url 
 });

如果你想使用原生的http模块,参数可以这样包含在 body 中:

var http = require('follow-redirects').http;
var fs = require('fs');

var options = {
  'method': 'POST',
  'hostname': 'example.com',
  'path': '/foo.html',
  'headers': {
  },
  'maxRedirects': 20
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function (chunk) {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });

  res.on("error", function (error) {
    console.error(error);
  });
});

var postData = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"examplekey\"\r\n\r\nexamplevalue\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--";
req.setHeader('content-type', 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW');
req.write(postData);
req.end();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM