express.use(express提供http服务功能实现示例)
导读:先看使用 const express =...
先看使用
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);
})
两个功能
执行listen方法时创建服务 访问方法符合时 ,访问对应路径 ,执行相应回调;均不匹配时 ,返回固定 404 信息;实现思路
注意到express是一个函数 ,其返回值是一个具有listen 、get方法的对象 ,我们可以在express的入口进行定义 ,从而目光转向对listen 、get方法的实现了
listen方法就是对原生的http模块的一个封装 ,我们只要在执行时利用原生 node 模块http创建一个服务就可以了 get方法和【均不匹配兼容】其实是一个路由功能 ,目前可以先简单的用一个队列去实现 ,每次执行get等路由方法 ,就将路径和对应处理函数入队列 ,然后在请求来时进行遍历匹配即可 。至于 404 兼容 ,我们可以在初始化时就存入一个处理函数,这样当所有都没有匹配上时就执行即可具体实现
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服务的资料请关注本站其它相关文章!
声明:本站所有文章 ,如无特殊说明或标注,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用 、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!