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服务的资料请关注我们其它相关文章!

(0)

相关推荐

  • nodejs express配置自签名https服务器的方法

    在nodejs中使用express来搭建框架可以说是非常的简单方便,但是一般默认创建的都是http服务器,也就是只能通过http协议进行访问.如今https已经是发展趋势,我们应该顺应时代的潮流.在本篇文章中,我们将会来使用自签名的方式创建证书,然后使用express框架来搭建https服务器,最后让浏览器或者客户端使用https协议进行访问. 首先我们要生成证书文件: (1)生成私钥key文件(下面的pathway表示你要保存的文件路径位置) openssl genrsa 1024 > /pa

  • node.js中express模块创建服务器和http模块客户端发请求

    首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文件等,就可以在浏览器中访问了 var express = require("express"); var path = require("path"); var app = express(); //目录 (当前目录下的www_root目录) app.use(expre

  • express+multer上传图片打开乱码问题及解决

    目录 express+multer上传图片打开乱码 原因 解决方法 简单的node文件上传下载及中文乱码 1. 基于MEAN的技术栈 2. 在前端代码中放置文件上传按钮和处理表单数据 3. 后端接收上传文件 4. 处理上传文件的乱码 5. 下载文件 6. 处理下载文件的乱码 express+multer上传图片打开乱码 原因 由于使用multer处理上传图片时,multer存储的是重命名的文件,文件并没有后缀名导致文件无法在服务器直接打开,手动加上后缀名就能打开文件. 如: 解决方法 引入fs模

  • 关于访问node express中的static静态文件方法

    目录 访问node express中的static静态文件 应用场合 解决方法 示例 Express访问静态资源(express.static) 前端调用静态资源 Express访问静态资源 访问node express中的static静态文件 应用场合 在项目中需要使用到node express框架进行中间件开发. 使用express托管静态文件或开放其它静态文件 解决方法 通过express内置的express.static方法可以方便地托管静态文件,例如图片.CSS.JavaScript文

  • C#实现给DevExpress中GridView表格指定列添加进度条

    目录 一.问题描述 二.实现方法 2.1.先注册单元格绘制方法 2.2.编写给指定单元格绘制进度条的方法 2.3.使用给指定单元格绘制进度条方法 三.相关内容 3.1.给单元格设置百分比 一.问题描述 在我们使用Winform配合DevExpress进行开发表格时,表格中的涉及到百分比数据的内容除了显示百分比的数字内容外,还希望搭配显示进度条效果(且低于百分之60的内容用红色表示不合格,高于百分之60的用绿色表示),这样百分比的显示效果更加清晰直观. 二.实现方法 2.1.先注册单元格绘制方法

  • 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 300

  • node.js+express留言板功能实现示例

    目录 留言板 所需类库 开源项目 项目结构 留言板 基于nodejs+express+art-template的留言板功能.包含列表界面.添加界面和发送留言功能. 所需类库 直接copy以下package.json 然后直接 npm install 或者yarn install 即可. package.json所需内容如下. { "name": "nodejs_message_board", "version": "2021.09&qu

  • Java中的ThreadLocal功能演示示例

    除了使用synchronized同步符号外,Java中的ThreadLocal是另一种实现线程安全的方法.在进行性能测试用例的编写过程中,比较简单的办法就是直接使用synchronized关键字,修饰对象.方法以及类.但是使用synchronized同步,这可能会影响应用程序的可伸缩性以及运行效率.但是如果要在多个线程之间共享对象又要保障线程安全,则除了synchronized之外没有特别适合测试的方法. Java中的ThreadLocal是实现线程安全的另一种方法,它不满足同步要求,而是通过为

  • springboot整合gateway实现网关功能的示例代码

    目录 1.使用场景: 2.代码实现 1创建gateway-service服务 2创建gateway-client服务 3.实现效果 1.使用场景: 网关可提供请求路由与组合.协议转换.安全认证.服务鉴权.流量控制与日志监控等服务.可选的网关有不少,比如 Nginx..Linkerd .eureka. Spring Cloud Gateway.consul等. Spring Cloud Gateway 针对进来的请求做各种判断和处理,比如说判断请求的合法性.权限验证,请求地址改写,请求参数.头信息

  • WPF+ASP.NET SignalR实现简易在线聊天功能的示例代码

    目录 涉及知识点 什么是ASP.NET SignalR 在线聊天整体架构 ASP.NET SignalR在线聊天服务端 1. 创建ASP.NET Web API项目 2. 创建消息通知中心Hub 3. 注册服务和路由 4. ASP.NET SignalR中心对象生存周期 SignalR客户端 1. 安装SignalR客户端依赖库 2. 客户端消息接收发送 运行示例 在实际业务中,当后台数据发生变化,客户端能够实时的收到通知,而不是由用户主动的进行页面刷新才能查看,这将是一个非常人性化的设计.有没

  • 通过Web Service实现IP地址查询功能的示例

    实例01 实现一个简单的Web服务访问 本实例将实现IP地址查询接口服务,根据用户传入的IP地址返回IP所在的省.市.地区,实例中将会用到IP地址库用于查询信息,由于数据较多,所以读者可在光盘资源文件中直接附加数据库文件,这里将不再介绍导入数据的过程. 程序实现步骤如下: (1)打开Visual Studio 2017开发环境,然后依次点击文件→新建→项目,在弹出的新建项目对话框中选择"ASP.NET Web应用程序"选项,然后更改项目名称和项目路径,如图12.1所示. 图12.1 新

  • Selenium Webdriver实现截图功能的示例

    前几天在研究中自动化的时候突发奇想,想着能不能来截个图,以便之后查看,实现的方法其实也不难,毕竟selenium webdriver已经提供了截图额功能,TakesScreenshot接口函数(英文意思就是获取屏幕截图takes-screenshot). 废话不多说了,直接上代码 package com.wch; import java.io.File; import java.io.IOException; import org.junit.After; import org.junit.Be

  • nodejs实现套接字服务功能详解

    本文实例讲述了nodejs实现套接字服务功能.分享给大家供大家参考,具体如下: 一.什么是套接字 1. 套接字允许一个进程他通过一个IP地址和端口与另一个进程通信,当你实现对运行在同一台服务器上的两个不同进程的进程间通信或访问一个完全不同的服务器上运行的服务时,套接字很有用.node提供的net模块,允许你既创建套接字服务器又创建可以连接到套接字服务器的客户端. 2. 套接字位于HTTP层下面并提供服务器之间的点对点通信.套接字使用套接字地址来工作,这是IP地址和端口的组合.在套接字连接中,有两

  • 一文看懂springboot实现短信服务功能

    前言 上一篇讲了springboot 集成邮件服务,接下来让我们一起学习下springboot项目中怎么使用短信服务吧. 项目中的短信服务基本上上都会用到,简单的注册验证码,消息通知等等都会用到.所以我这个脚手架也打算将短息服务继承进来. 短息服务我使用的平台是阿里云的.网上有很多的短信服务提供商.大家可以根据自己的需求进行选择. 准备工作 在阿里云上开通服务,以及进行配置.这些阿里云官方文档都写的很清楚,怎么做就不细说的,大家可以参考一下这篇文章: https://www.jb51.net/a

  • Qt实现保存、浏览、预览、打印功能的示例代码

    Qt提供了以文本.图片.HTML等方式来实现对文档的操作,主要用到了QPrinter类和QPainter类,用到了QFileDialog文件窗口.QPrintPreviewDialog预览窗口类和QPrintDialog打印窗口类,Qt5也提供了QPdfWriter类来实现对pdf的操作,这里并不包括打开pdf文件,Qt没有提供任何方法来直接像文件浏览器一样打开pdf文件,可以用第三方库来实现. 这里采用了图片的方式来实现保存.预览和打印,其实 三个功能基本上一样. 1.保存PDF (1)保存某

随机推荐