示例代码请访问我的GitHub: github.com/chencl1986/…
同时处理GET/POST请求
通常在开发过程中,同一台服务器需要接收多种类型的请求,并区分不同接口,向客户端返回数据。
最常用的方式,就是对请求的方法、url进行区分判断,获取到每个请求的数据后,统一由一个回调函数进行处理。
如下示例代码,可以在/lesson08/form_get.html和/lesson08/form_post.html中,通过提交表单查看效果。
示例代码:/lesson08/server.js
const http = require('http')
const url = require('url')
const querystring = require('querystring')const server = http.createServer((req, res) => {// 定义公共变量,存储请求方法、路径、数据const method = req.methodlet path = ''let get = {}let post = {}// 判断请求方法为GET还是POST,区分处理数据if (method === 'GET') {// 使用url.parse解析get数据const { pathname, query } = url.parse(req.url, true)path = pathnameget = querycomplete()} else if (method === 'POST') {path = req.urllet arr = []req.on('data', (buffer) => {// 获取POST请求的Buffer数据arr.push(buffer)})req.on('end', () => {// 将Buffer数据合并let buffer = Buffer.concat(arr)// 处理接收到的POST数据post = querystring.parse(buffer.toString())complete()})}// 在回调函数中统一处理解析后的数据function complete() {console.log(method, path, get, post)}
})server.listen(8080)
复制代码