How to send a POST request from node.js Express?
有人能告诉我从node.js Express发送post请求的最简单方法,包括如何传递和检索一些数据? 我希望在PHP中类似于cURL。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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; }); } |
为此,您的服务器必须是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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); |
如此处所述的帖子请求:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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(); |
你可以尝试这样:
1 2 3 4 5 6 | 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); }); |
我使用
这是文档
和演示一样:
1 2 3 4 5 6 | var sa = require('superagent'); sa.post('url') .send({key: value}) .end(function(err, res) { //TODO }); |
在您的服务器端,代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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"); }); |
在接收端服务器代码看起来像:
1 2 3 4 5 6 7 8 9 10 11 12 | 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。