Express框架教程:中文详解与实例解析

真正的勇气不是无所畏惧,而是即使害怕的要死,也要勇敢面对

文章目录

          • Express
          • 中间件介绍和语法

Express
  • 简介
    • express是一个第三方模块,用于快速搭建服务器
    • express是一个基于node.js 平台,快速、开放、极简的 web 开发框架
    • express保留了http模型的基本API,使用express的时候,也能使用http的API
    • express还额外封装了一些新方法,能让我们更方便的搭建服务器
    • express提供了中间件功能,其它很多强大的第三方模块都是基于express开发的
  • 安装
    • 项目文件夹中执行 npm i express
      注意:express不能安装在express文件夹中,否则安装失败
  • 使用express构造web服务器步骤
    • 加载express模块
    • 创建express服务器
    • 开启服务器
    • 监听浏览器请求并进行处理
    // 1) 加载 express 模块
    const express = require('express')
    // 2) 创建 express 服务器
    const app = express()
    // 3) 开启服务器
    app.listen(3006, () => console.log('express服务器开始工作了'))
    // 4) 监听浏览器请求并进行处理
    app.get('GET请求的地址', 处理函数)
    app.post('POST请求的地址', 处理函数)
    
  • express封装的新方法
    • express
      • express.static() 开放静态资源
      • express.urlencoded() 获取post请求
    • app
      • app.get() 处理客户端的GET请求
      • app.post() 处理客户端的POST请求
      • app.use() 设置应用级别的中间件
    • req
      • req.body() 获取POST请求体
      • req.params 获取GET请求动态参数
      • req.query 获取GET请求参数(获取查询字符串参数)
    • res
      • res.sendFile(文件的绝对路径) 读取文件,并将结果响应
      • res.set({name, value}) 设置响应头
      • res.status(200) 设置响应状态码
      • res.send(字符串或对象) 响应结果
      • res.json(对象) 以json格式响应结果
      • res.jsonp() 以jsonp格式响应结果
        注意:在express中,我们仍然可以使用http模块中的方法
中间件介绍和语法
  • 介绍
    • 中间件(Middleware ),特指业务流程的中间处理环节
    • 中间件,是express最大的特色,也是最重要的一个设计
    • 很多第三方模块,都可以当做express的中间件,配合express,开发更简单
    • 一个express应用,是由各种各样的中间件组合完成的
    • 中间件本质上就是一个函数
  • 语法
    • 中间件函数中有四个基本参数: err、req、res、next
      • 很多情况下,err都会省略
      • req就是请求相关的对象
      • res就是响应相关的对象
      • next:它是一个函数,某些时候可以省略
    • 把写好的中间件函数传递给app.get()app.post()app.use()使用
      // app.get('/api/getbooks',  中间件函数)
      app.get('/api/getbooks', (req, res) => { })// app.use([path],  中间件函数)
      app.use((req, res, next) => { })app.use('/my', (req, res, next) => { })
      
  • 特点
    • 每个中间件函数,共享req对象,共享res对象
      • js代码中,所有的req对象是一个对象,所有的res是一个对象
    • 不调用next(),则程序执行到当前中间件函数后,不再向后执行
      • 注意中间件的顺序,因为有可能顺序原因,中间件函数不会执行
      • 为了防止代码逻辑混乱,调用next()函数后不要再写额外的代码
    • 客户端发送过来的请求,可能连续调用多个中间件进行处理
    • 使用app.use()注册的中间件,GET和POST请求都可以触发
    // 自定义中间件函数,统一处理跨域
    app.use((req, res, next) => {// 为后续所有的接口设置响应头,解决跨域问题res.set({'Access-Control-Allow-Origin': '*'});next()
    })
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/453994.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新型电力系统精细化时序模拟分析软件

一、背景意义 在“碳达峰碳中和”及“新型电力系统”战略引领下,新型电力系统电力电量平衡分析成为电力系统规划运行模拟仿真的必要环节。近年来,随着电网新能源渗透率逐渐提升,储能等灵活性调节资源大幅增加,传统的基于典型曲线…

qiankun 应用之间数据传递

qiankun 应用之间数据传递 全局共享 initGlobalState qiankun initGlobalState API 单击前往 qiankun 内部提供了 initGlobalState 方法用于注册 MicroAppStateActions 实例用于通信,该实例有三个方法,分别是onGlobalStateChange、setGlobalState、of…

小巧设计,强大功能:探索SoC模块的多样化功能

LoRa-STM32WLE5模块基于ST的STM32WLE5芯片,采用LoRa调制,适用于超远程和超低功耗无线电解决方案。搭载高性能Arm Cortex-M4核心,频率高达48 MHz,支持256 KB闪存和64 KB运行内存,具备安全性增强功能。广泛应用于安防、智…

C++进阶之路:日期类的实现、const成员(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

ue5 扇形射线检测和鼠标拖拽物体

这里的NumTrace是要发射几根射线,Degrees Per Trace是每根射线之间的角度, 例如 要在角色面前实现一个180度的扇形射线检测,就需这两个变量乘起来等于180 TraceLength是射线的长度 下面是鼠标拖动物体逻辑,很简单 这里的Floor和…

文心快码 - Baidu Comate 让AI帮你提高生产力|AI代码助理

码随心动,快人一步,更懂你的智能代码助手 基于文心大模型,结合百度编程大数据,为你生成优质编程代码。文心快码 - Baidu Comate,更懂你的AI编程伙伴,研发效率提升好帮手。 一、更懂研发知识 开发速度快 构…

提示词高级阶段学习day3.1

第三个类型就是让模型做信息的转化 最直观的例子就是翻译 去翻译英文,它的效果都非常好 除此之外,给大家举一个让大模型翻译代码的例子, 还有就是让大模型写代码的 这是一个数据分析场景,其实数据分析场景一直追求的就是一个…

LeetCode 精选 75 回顾

目录 一、数组 / 字符串 1.交替合并字符串 (简单) 2.字符串的最大公因子 (简单) 3.拥有最多糖果的孩子(简单) 4.种花问题(简单) 5.反转字符串中的元音字母(简单&a…

企业级调度器 LVS

集群和分布式基础知识 系统性能的扩展方式 当一个系统,或一个服务的请求量达到一定的数量级的时候,运行该服务的服务器的性能和资源上限, 很容易成为其性能瓶颈。除了性能问题之外,如果只部署在单台服务器上,在此服务…

iOS Swift逆向——deMangle过程中的偏移计算

碰到好多函数最开始都会调用这个函数&#xff0c;xref了一下&#xff0c;发现有上万个xref。 __int64 __fastcall sub_1000B6ED0(__int64 *a1) {__int64 result; // x0result *a1;if ( result < 0 ){result swift_getTypeByMangledNameInContext((char *)a1 (int)result…

Hyper-V安装使用教程

操作系统&#xff1a;Windows Server 2019 Datacenter 1.安装Hyper-V (1)控制面板 > 程序 > 启用或关闭 Windows 功能 (2)勾选Hyper-V > 安装重启 2.Hyper-V管理器 (1)连接到服务器 > 本地计算机 (2)虚拟交换机管理器 > 新建虚拟网络交换机 > 外部 > 创…

Spark的安装配置及集群搭建

Spark的本地安装配置&#xff1a; 我们用scala语言编写和操作spark&#xff0c;所以先要完成scala的环境配置 1、先完成Scala的环境搭建 下载Scala插件&#xff0c;创建一个Maven项目&#xff0c;导入Scala依赖和插件 scala依赖 <dependency><groupId>org.scal…

国家唯一认证的防脱发产品,双11速速囤

脱发的一定都深刻知道掉发严重反复折磨的痛苦&#xff01;为了能早点调理好掉发严重的问题&#xff0c;真的买了一堆育发液&#xff0c;也是踩了不少雷&#xff0c;今天就把用过好用的分享出来&#xff0c;有需要的趁着双十一赶紧囤点~ 一、露卡菲娅防脱精华液&#xff1a;科技…

【硬盘知识】记一次买 希捷 二手 清零盘 的经历(怎么检测硬盘的好坏、健康程度)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

信息搜集 ---开发框架识别

开发框架识别 插件推荐 插件商店搜索wappalyzer Python - Django&Flask Django 1、wappalyzer插件 2、返回数据包的特征字段 Set-Cookie:expires Flask 1、wappalyzer插件 2、返回数据包的特征字段 Set-Cookie:expires 或 Etag: "flask PHP - ThinkPHP&Lar…

光纤光学——弱导光纤与线偏振模

一、基本思想 弱导光纤&#xff1a;n1≈ n2 , k0n1 ≈ k0n2&#xff0c;亦即&#xff1a; k0n1 ≈ k0 n2 ≈ 光线与纤轴的夹角小&#xff1b;芯区对光场的限制较弱&#xff1b; 消逝场在包层中延伸较远。 弱导光纤场的特点&#xff1a; HEι1,m模式与EHι-1,m色散曲线相近…

Vivado - Aurora 8B/10B IP

目录 1. 简介 2. 设计调试 2.1 Physical Layer 2.2 Link Layer 2.3 Receiver 2.4 IP 接口 2.5 调试过程 2.5.1 Block Design 2.5.2 释放 gt_reset 2.5.3 观察数据 3. 实用技巧 3.1 GT 坐标与布局 3.1.1 选择器件并进行RTL分析 3.1.2 进入平面设计 3.1.3 收发器布…

R语言机器学习算法实战系列(六)K-邻近算法 (K-Nearest Neighbors)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve保存模型总结优点:缺点:系统信…

Gin框架操作指南01:开山篇

Gin是目前最流行&#xff0c;性能最好的的GoWeb框架&#xff0c;几乎成为了学习GoWeb必备的知识。本人最近也在学Gin&#xff0c;在b站搜了很多教程&#xff0c;发现有的教程不够详细&#xff0c;有的教程工具包安装有问题&#xff0c;而官方文档的很多示例代码又不全&#xff…

deepin V23 部署Ollama

系统&#xff1a;Deepin V23 1.Ollama简单介绍 Ollama是一个开源的大语言模型本地部署工具&#xff0c;通过它可以方便的在本机部署开源大模型。 Ollama仓库地址&#xff1a;https://github.com/ollama/ollama Ollama官方下载地址&#xff1a;https://…