如何从 node.js Express 发送 POST 请求?
Posted
技术标签:
【中文标题】如何从 node.js Express 发送 POST 请求?【英文标题】:How to send a POST request from node.js Express? 【发布时间】:2015-11-26 11:14:44 【问题描述】:谁能告诉我从 node.js Express 发送帖子请求的最简单方法,包括如何传递和检索一些数据?我期待类似于 php 中的 cURL 的东西。
【问题讨论】:
Userequest
.
看到这个***.com/questions/6819143/curl-equivalent-in-nodejs
How to make an HTTP POST request in node.js?的可能重复
【参考方案1】:
var request = require('request');
function updateClient(postData)
var clientServerOptions =
uri: 'http://'+clientHost+''+clientContext,
body: JSON.stringify(postData),
method: 'POST',
headers:
'Content-Type': 'application/json'
request(clientServerOptions, function (error, response)
console.log(error,response.body);
return;
);
为此,您的服务器必须类似于:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded( extended: false ));
app.use(bodyParser.json())
var port = 9000;
app.post('/sample/put/data', function(req, res)
console.log('receiving data ...');
console.log('body is ',req.body);
res.send(req.body);
);
// start the server
app.listen(port);
console.log('Server started! At http://localhost:' + port);
【讨论】:
【参考方案2】:如here 所述的发布请求:
var http = require('http');
var options =
host: 'www.host.com',
path: '/',
port: '80',
method: 'POST'
;
callback = function(response)
var str = ''
response.on('data', function (chunk)
str += chunk;
);
response.on('end', function ()
console.log(str);
);
var req = http.request(options, callback);
//This is the data we are posting, it needs to be a string or a buffer
req.write("data");
req.end();
【讨论】:
哇,流、回调和这样的事情很快就会失控。几乎感觉就像在 C 中工作 @MuhammadUmer 我认为如果你使用 promise 接口,回调会变得更简单。我从来没有使用过这个模块,但是有一个request-promise
实现了对请求对象的承诺【参考方案3】:
你可以这样尝试:
var request = require('request');
request.post( headers: 'content-type' : 'application/json'
, url: <your URL>, body: <req_body in json>
, function(error, response, body)
console.log(body);
);
【讨论】:
【参考方案4】:我使用superagent
,类似于jQuery。
这里是docs
演示如下:
var sa = require('superagent');
sa.post('url')
.send(key: value)
.end(function(err, res)
//TODO
);
【讨论】:
【参考方案5】:在您的服务器端,代码如下所示:
var request = require('request');
app.post('/add', function(req, res)
console.log(req.body);
request.post(
url:'http://localhost:6001/add',
json:
unit_name:req.body.unit_name,
unit_price:req.body.unit_price
,
headers:
'Content-Type': 'application/json'
,
function(error, response, body)
// console.log(error);
// console.log(response);
console.log(body);
res.send(body);
);
// res.send("body");
);
在接收端服务器代码如下:
app.post('/add', function(req, res)
console.log('received request')
console.log(req.body);
let adunit = new AdUnit(req.body);
adunit.save()
.then(game =>
res.status(200).json('adUnit':'AdUnit is added successfully')
)
.catch(err =>
res.status(400).send('unable to save to database');
)
);
Schema 只是两个属性 unit_name 和 unit_price。
【讨论】:
以上是关于如何从 node.js Express 发送 POST 请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 express/node js 中发送错误 http 响应?
Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?
如何从 mysql 数据库中检索行并通过 Express.js 将它们作为 JSON 发送?