基于nodejs做一个简单的http/web服务器
nodejs是什么
简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
创建项目环境,执行下面的命令
cd d:
mkdir webapp
cd webapp
npm install http
npm install fs
npm install querystring
目录结构
服务端代码
app.js
/**
* web服务
* request 请求数据
* respond 响应数据
*/
const http = require('http');
const method = require('./method');
http.createServer((request, respond) => {
/**
*
* 根据http 消息结构
* 该处可以自定义结构数据 也可以默认
*
*/
method[request.method](request, respond);
}).listen(3000, function () {
console.log('监听端口:%s', 3000);
});
method.js
/**
*
* 方法回调对象
* 根据http1.1定义的方法写 可以自定义请求方法
*
* MYMETHOD:自定义请求方法
*
*/
const fuc = require("./fuc");
module.exports = {
GET: fuc.getFuc,
POST: fuc.postFuc,
HEAD: fuc.headFuc,
MYMETHOD: fuc.mymethodFuc
}
fuc.js
/**
*
* 根据不同请求方法做不同的处理
*
*/
const url = require('url');
const querystring = require('querystring');
const getData = require('./data');
const route = require('./route');
module.exports = {
getFuc: (req, res) => {
const requestData = url.parse(req.url, true);
/**
* 默认
*/
if (requestData.pathname === '/') {
requestData.pathname = route.index
}
return getData.data(requestData, res);
},
postFuc: (req, res) => {
const requestData = url.parse(req.url, true);
var params = '';
req.on('data', (chunk) => {
params += chunk;
})
req.on('end', () => {
params = querystring.parse(params);
return getData.data(requestData, res);
})
},
headFuc: (req, res) => {
},
mymethodFuc: (req, res) => {
},
}
data.js
/**
*
* 获取客服端请求 服务器返回相应数据
*
*
*/
const fs=require('fs');
module.exports = {
data: (req, res) => {
fs.exists(__dirname.concat(req.pathname), (isexists) => {
if (isexists) {
var buf = new Buffer.alloc(10240);
fs.open(__dirname.concat(req.pathname), 'r+', function (err, fd) {
if (err) {
return console.error(err);
}
fs.read(fd, buf, 0, buf.length, 0, function (err, bytes) {
if (err) {
res.writeHead(500);
res.end();
}
if (bytes > 0) {
res.end(buf.slice(0, bytes).toString());
}
});
});
} else {
res.writeHead(404);
res.end();
}
})
}
}
上面代码完成就 在终端执行node app.js
至此一个简单的web服务就搭建完了。