express提供http服务功能实现示例
更新时间:2022年10月12日 11:25:25 作者:南方小菜
这篇文章主要为大家介绍了express提供http服务功能实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
先看使用
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服务的资料请关注脚本之家其它相关文章!
相关文章
Node.js报错信息Error: Cannot find module 'XXX'问题及解
这篇文章主要介绍了Node.js报错信息Error: Cannot find module 'XXX'问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-10-10node如何将package.json中的包降为低版本或者升级为高版本
比如现在你用某个包的当前版本,但是你安装的版本高了,那么你应该这么做,首先删除node项目中的node_modules目录,防止安装时的包不一致,下面给大家介绍node将package.json中的包降为低版本或者升级为高版本的方法,感兴趣的朋友一起看看吧2023-11-11
最新评论