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是一个函数,其返回值是一个具有listenget方法的对象,我们可以在express的入口进行定义,从而目光转向对listenget方法的实现了

  • 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中Buffer的一些你可能不知道的用法

    关于Node.js中Buffer的一些你可能不知道的用法

    网上关于Node.js中Buffer用法的文章有很多,但是感觉还是不够详细,所以这篇文章主要介绍了关于Node.js中Buffer的一些你可能不知道的用法,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • Node.js中的events事件模块知识点总结

    Node.js中的events事件模块知识点总结

    在本篇文章里小编给大家整理的是一篇关于Node.js中的events事件模块知识点总结内容,有兴趣的朋友们可以跟着学习下。
    2021-12-12
  • nodejs分页类代码分享

    nodejs分页类代码分享

    最近在写nodejs项目,没有发现合适或者特别好用的分页插件,今天晚上自己写了一个,分享给大家,也希望大家能够拍砖!
    2014-06-06
  • 搭建一个Koa后端项目脚手架的方法步骤

    搭建一个Koa后端项目脚手架的方法步骤

    这篇文章主要介绍了搭建一个Koa后端项目脚手架的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • node 使用multer中间件上传报错Unexpected end of form的问题及解决方法

    node 使用multer中间件上传报错Unexpected end of fo

    再前几天还是可以正常上传,但今天运行出现该报错,下面通过场景分析给大家介绍node使用multer中间件上传,报错Unexpected end of form的解决方案,感兴趣的朋友一起看看吧
    2025-03-03
  • 基于nodejs+express(4.x+)实现文件上传功能

    基于nodejs+express(4.x+)实现文件上传功能

    通过一段时间的查阅资料发现实现上传的方式有:1.express中间件multer模块2.connect-multiparty模块(但现在 官方不推荐 )3.使用multiparty模块实现4.使用formidable插件实现,本文给大家介绍nodejs+express(4.x+)实现文件上传功能,需要的朋友参考下
    2015-11-11
  • node.js中的fs.readFileSync方法使用说明

    node.js中的fs.readFileSync方法使用说明

    这篇文章主要介绍了node.js中的fs.readFileSync方法使用说明,本文介绍了fs.readFileSync的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js中require的工作原理浅析

    Node.js中require的工作原理浅析

    这篇文章主要介绍了Node.js中require的工作原理浅析,通过分析node.js的源码得到本文,需要的朋友可以参考下
    2014-06-06
  • Node.js自定义实现文件路由功能

    Node.js自定义实现文件路由功能

    这篇文章主要介绍了Node.js自定义实现文件路由功能的相关资料,需要的朋友可以参考下
    2017-09-09
  • node.js中joi模块的基本使用方式

    node.js中joi模块的基本使用方式

    这篇文章主要介绍了node.js中joi模块的基本使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论