import http from 'http';
import url from 'url';
class Rainbow {
/**服务器实例 */
server;
/**服务器事件 */
event = {
GET: {},
POST: {},
PUT: {},
DELETE: {},
};
constructor() {
//初始化实例
this.server = http.createServer((req, res) => {
const pathname = url.parse(req.url).pathname;
//首页的页面资源和图标需要特殊处理,这里只返回首页信息
const homePage = ['/', '/favicon.ico'];
res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });
switch (req.method) {
case 'GET':
if (homePage.includes(req.url)) {
res.end(JSON.stringify({ code: 200, msg: '请求成功', data: { message: '我是首页' } }));
return;
}
this.event['GET'][pathname](req, res);
break;
case 'POST':
this.event['POST'][pathname](req, res);
break;
case 'PUT':
this.event['PUT'][pathname](req, res);
break;
case 'DELETE':
this.event['DELETE'][pathname](req, res);
break;
default:
res.end('请求类型错误!');
}
});
}
//服务器监听函数
listen(port, callback) {
this.server.listen(port, callback());
}
get(path, callback) {
this.event['GET'][path] = callback;
}
post(path, callback) {
this.event['POST'][path] = callback;
}
put(path, callback) {
this.event['PUT'][path] = callback;
}
delete(path, callback) {
this.event['DELETE'][path] = callback;
}
}
const server = new Rainbow();
server.get('/home', (req, res) => {
res.end(JSON.stringify({ code: 200, msg: '请求成功', data: { message: '你好' } }));
});
server.listen(3000, () => {
console.log('服务启动在http://localhost:3000端口上');
});
node简易封装
于 2025-04-05 12:41:00 首次发布