先看使用

const express = require('./express');
const app = express();
app.get('/',function (req,res){
res.end('/')
})
app.get('/hello',function (req,res){
res.end('/hello');
})
app.listen(3000,function () {
console.log('server start 3000');
})

两个功能

实现思路

注意到express是一个函数,其返回值是一个具有listenget方法的对象,我们可以在express的入口进行定义,从而目光转向对listenget方法的实现了

具体实现

const http = require('http')
const url = require('url')
function createApplication() {
const router = [
{
path: '*',
method: '*',
handler(req,res){
res.end(`Cannot ${req.method} ${req.url}`)
}
}
]
return {
get(path,handler){
router.push({
path,
method: 'get',
handler
})
},
listen(port,cb){
let server = http.createServer(function (req,res) {
let {
pathname
} = url.parse(req.url); // 获取请求的路径
let requireMethod = req.method.toLowerCase();
for (let index = 1; index < router.length; index++) {
const {method,path,handler} = router[index];
if(pathname === path && requireMethod === method){
return handler(req, res);
}
}
return router[0].handler(req,res);
})
server.listen(...arguments)
}
}
}
module.exports = createApplication

以上就是express提供http服务功能实现示例的详细内容,更多关于express提供http服务的资料请关注本站其它相关文章!

发表回复