NodeJS获取发布的数据 – 没有框架
假设我想要将已发布的数据写入/completed
情况下的variables。 我该怎么办? 我能够将数据检索到request.on(“data”…),但如果我将data
logging到我的/completed
案例中, data
是空的。
var http = require('http'); http.createServer( function(request, response) { var data = ""; if(request.method == 'POST') { request.on('data', function(chunk) { console.log('Received data:', chunk.toString()); data += chunk.toString(); }); request.on('end', function() { console.log('Complete data:', data); }); } switch (request.url) { case "/": response.writeHead(200, {'Content-Type': 'text/html'}); response.write("<a href='/form'>Go to form</a>"); response.end(); break; case "/form" : response.writeHead(200, {'Content-Type': 'text/html'}); response.write("<form method='POST' action='/completed'>"); response.write("<input type='text' name='data1'/><hr/>"); response.write("<input type='text' name='data2'/><hr/>"); response.write("<input type='text' name='data3'/><hr/>"); response.write("<input type='file' name='data4'/><hr/>"); response.write("<input type='submit' value='Send'/>"); response.end("</form>"); break; case "/completed": console.log(request); response.writeHead(200, {'Content-Type': 'text/html'}); // var post = ? response.end(); break; default: response.writeHead(403, {'Content-Type': 'text/html'}); response.end("Forbidden"); break; } }).listen(1337);
结果
Received data: data1=dfs&data2=ds&data3=dvbcfgxrtgdw Complete data: data1=dfs&data2=ds&data3=dvbcfgxrtgdw
您可以:
app.use(express.bodyParser()); app.post('/completed', function(request, response){ console.log(request.body.user.name); console.log(request.body.user.email); });
假设你使用快递。
否则,您将不得不使用req.on数据和结束事件:
if (req.method == 'POST') { console.log("POST"); var body = ''; req.on('data', function (data) { body += data; console.log("Partial body: " + body); }); req.on('end', function () { console.log("Body: " + body); }); res.writeHead(200, {'Content-Type': 'text/html'}); res.end('post received'); }
您还可以添加:
qs = require('querystring'); var json = qs.parse(body); util.log("json: " + json);
检索参数。
Express是非常有用的,我喜欢用它来避免这种types的代码处理。
- 如何使用node.js发布到请求
- 如何在后端使用nodejs + express处理ajax / http-post请求(responsetype:arraybuffer)
- 从Firebase Function / Express / Node.js获取原始POST数据
- 如何在Node.js中模拟POST请求之后访问响应体?
- 当正文中有表情符号时,HTTP POST失败
- 为request.post设置内容types的标题为json
- 发布请求不会与Angular.js一起发送。 我究竟做错了什么?
- Node.js – 简单的Restify POST摩卡testing失败
- 如何在Node JSsubprocess中设置$ _POST值