node.js搭建动态服务器
//引入相关模块 let http = require(http); let path = require(path); let url = require(url); let fs = require(fs); //添加静态自愿代码,详情看上一节 function staticRoot(staticPath, req, res) { let pathObj = url.parse(req.url, true); if (pathObj.pathname === /favicon.ico) { return; } if (pathObj.pathname === /) { pathObj.pathname += index.html; } let filePath = path.join(staticPath, pathObj.pathname); fs.readFile(filePath, binary, (err, data) => { if (err) { res.writeHead(404, not found); res.write(<h1>Not Found</h1>) res.end() } else { res.writeHead(200, ok) res.write(data, binary); res.end() } }) } //接口代码 var routes = { /a: function(req, res){ res.end(JSON.stringify(req.query)) }, /b: function(req, res){ res.end(match /b) }, /a/c: function(req, res){ res.end(match /a/c) }, /search: function(req, res){ res.end(username=+req.body.username+,password=+req.body.password) } } //解析请求资源 function routePath(req, res) { //解析请求的url let pathObj = url.parse(req.url, true); //获取参数名称,返回函数对象 let handleFunc = routes[pathObj.pathname]; //判断routes数组中存在接口数据 if (handleFunc) { //存在,监听data和on事件 let body = ; req.on(data, function (chunk) { //获取加载的数据 body += chunk; console.log(body) }).on(end, function () { //加载完成,解析body req.body = parseBody(body); //传递参数,调用参数对象 handleFunc(req, res) }) } else { //不存在,则是静态资源 staticRoot(path.join(__dirname, static), req, res) } } //解析body参数,简单的处理 function parseBody(body){ console.log(body) var obj = {} body.split(&).forEach(function(str){ obj[str.split(=)[0]] = str.split(=)[1] }) return obj } //创建服务 http.createServer((req, res) => { routePath(req, res); }).listen(8080)
下一篇:
部署MySQL数据库到服务器