Node.js实现简单的POST请求
这个小demo的结构和上一篇写的Node.js实现简单的GET请求一样。
唯一不同的是
之前的get.js改成了post.js
下面是post.js文件
//这个案例展示get请求参数如何获得
var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')
var url = require('url')
var fs = require('fs')
var querystring = require('querystring')
// Serve up public/ftp folder
//配置静态资源服务器,将public文件夹静态化出来
var serve = serveStatic('public', {'index': ['index.html', 'index.htm']})
// Create server
var server = http.createServer(function onRequest (req, res) {
//路由
var pathname = url.parse(req.url).pathname;
if(pathname == '/addStudent'){
//定义了一个content变量,用于暂存请求体信息
var content = '';
//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量
//post请求经常会很长,此时会分段,网上有文章大约800k左右是一个HTTP报文段
req.on('data',(chunk) => {
//将段落合并
content += chunk;
})
//当所有数据发送完毕之后,此时将会触发end事件
req.on('end',() => {
queryJSON = querystring.parse(content);
var data = `姓名:${queryJSON.name}\r\n年龄:${queryJSON.age}\r\n性别:${queryJSON.sex}\r\n`;
fs.writeFile(`./student_data/${queryJSON.name}.txt`,data,(err) => {
console.log(err);
if(err){
res.end('err');
}else{
res.end('ok');
}
})
return;
// console.log(content);
// res.end('ok')
})
return;
}
serve(req, res, finalhandler(req, res))
})
// Listen
server.listen(3000)
其余的文件和启动项目的方法都在上一篇博客里Node.js实现简单的GET请求写到了,这里不在赘述。