Express-基础语法

news2024/11/15 19:56:43

介绍

Express是基于Node.js开发的第三方模块包,使用 Express,我们可以方便、快速的创建 Web 网站的服务器或 API 接口的服务器

参考

https://www.expressjs.com.cn/

基本用法

安装

npm install express@4.17.1
@后面追加版本号,不写安装最新版

创建最基本的Web服务器

// 1. 导入 express
const express = require('express')
// 2. 创建 web 服务器
const app = express()

// 3. 启动 web 服务器
app.listen(80, () => {
  console.log('express server running at http://127.0.0.1')
})

监听GET请求

// 4. 监听客户端的 GET 和 POST 请求,并向客户端响应具体的内容
app.get('/user', (req, res) => {
  // 调用 express 提供的 res.send() 方法,向客户端响应一个 JSON 对象
  res.send({ name: 'zs', age: 20, gender: '男' })
})

监听POST请求

app.post('/user', (req, res) => {
  // 调用 express 提供的 res.send() 方法,向客户端响应一个 文本字符串
  res.send('请求成功')
})

获取客户端发送查询参数

app.get('/', (req, res) => {
  // 通过 req.query 可以获取到客户端发送过来的 查询参数
  // 注意:默认情况下,req.query 是一个空对象
  console.log(req.query)
  res.send(req.query)
})

在这里插入图片描述

获取URL中的动态参数

// 注意:这里的 :id 是一个动态的参数
app.get('/user/:ids/:username', (req, res) => {
  // req.params 是动态匹配到的 URL 参数,默认也是一个空对象
  console.log(req.params)
  res.send(req.params)
})

在这里插入图片描述

托管静态资源

1. express.static()

express 提供了一个非常好用的函数,叫做express.static(),通过它,我们可以非常方便地创建一个静态资源服务器,例如,通过如下代码就可以将public目录下的图片、CSS文件、JavaScript文件对外开放访问了:

app.use(express.static('public'))

现在,你就可以访问public目录中的所有文件了:
http://localhost:3000/images/bg.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/login.js

注意:Express在指定的静态目录中查找文件,并对外提供资源的访问路径,因此,存放静态文件的目录名不会出现在URL中。

托管多个静态资源目录

多次调用express.static()函数即可

app.use(express.static('public'));
app.use(express.static('files'));

在上方如果多个文件夹中有相同的文件会拿上面最先调用的目录里的文件

挂载路径前缀

如果希望在托管的静态资源访问路径前,挂载路径前缀,则我们可以用如下方式:
路径前缀必须要加上/,否则拼接会出现问题

app.use('/files', express.static('files'));

nodemon

为什么使用nodemon

在编写调试Node.js项目的时候,如果修改了项目代码,则需要频繁的手动close掉,然后再重新启动,非常繁琐。
现在,我们可以使用nodemon(https://www.npmjs.com/package/nodemon)这个工具,它能够监听项目文件的变动,当代码被修改后,nodemon会自动帮我们重启项目,极大方便了开发和调试。

安装nodemon

终端输入以下命令可安装为全局工具

npm install -g nodemon

注意:在终端输入如果用的是用户身份需要sudo提权,而如果是root身份,那么npm出于安全问题,会禁止root用户过多权限

使用nodemon

当基于 Nodejs 编写了一个网站应用的时候,传统的方式,是运行 node app.js 命令,来启动项目。这样做的坏处是:代码被修改之后,需要手动重启项目。

现在,我们可以将 node 命令替换为 nodemon 命令,使用nodemon app.js 来启动项目。这样做的好处是: 代码被修改之后,会被 nodemon 监听到,从而实现自动重启项目的效果。

node app.js

# 将上面的终端命令替换为下面命令,即可实现自动重启项目效果
nodemon app.js

监听Request事件

下面写的一个自定义Express中间件,将请求体中发生的urlencoded数据传到req.body

// 导入 Node.js 内置的 querystring 模块
const qs = require('querystring')

const bodyParser = (req, res, next) => {
  // 定义中间件具体的业务逻辑
  // 1. 定义一个 str 字符串,专门用来存储客户端发送过来的请求体数据
  let str = ''
  // 2. 监听 req 的 data 事件
  req.on('data', (chunk) => {
    str += chunk
  })
  // 3. 监听 req 的 end 事件
  req.on('end', () => {
    // 在 str 中存放的是完整的请求体数据
    // console.log(str)
    // TODO: 把字符串格式的请求体数据,解析成对象格式
    const body = qs.parse(str)
    req.body = body
    next()
  })
}

module.exports = bodyParser

END


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 安装 MySQL 并使用 Navicat 连接

本文目录 1. 拉取 MySQL 镜像2. 创建并运行一个 MySQL 容器3. 验证MySQL容器是否创建并运行成功3.1 进入 MySQL 容器3.2 进入 MySQL3.3 查看 host 和 user 4. MySQL 开启远程访问权限4.1 切换数据库4.2 给 root 用户分配远程访问权限4.3 强制刷新权限 5. 服务器配置 3306 的开放…

iOS开发中的APP内活动之通用链接

首先,我们先来了解下APP内活动,这是苹果官方给的说明:https://developer.apple.com/cn/help/app-store-connect/offer-in-app-events/overview-of-in-app-events简单来说,就是我们在苹果后台开发者后台里填写关于自己APP内的一些具…

《MySQL》对表进行操作(DDL语句)

文章目录 💡创建表💡修改表💡删除表 在了解下列语句前,先掌握一下指令 # 查看表内容 desc [表名] # 详细查看表内容 show create table [表名] \G💡创建表 # 创建表 create table [表名] ([字段1] [类型1],[字段2] […

嵌入式 - UART使用进阶

UART – Advanced Features 概要 / Overview 最简单直接的使用UART接口的方式,是在轮循操作中来设置和处理UART接口。 轮询式UART的问题是轮询方式本身就是低效率的。 如果我们的UART被配置为115200的波特率和8N1,那么传输一个字符需要多长时间&#xff…

一款支持AI思维导图的AI助手——ChatMindAI

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

“智慧水利”怎么建?这份智慧水利整体解决方案 值得参?

2021年,补齐水利信息化突出短板,提升强监管支撑能力。 2025 年,全面提升水利数字化、网络化水平,明显提升重点领域智能化水平。 2035 年,全面支撑水治理体系和治理能力现代化。 构建天空地一体化水利感知网&#xf…

python怎么使用Pillow库来添加图片水印

当使用Pillow库来添加图片水印时,下面是一个示例代码: 请确保在运行示例代码之前,已经安装了Pillow库(可以使用pip install pillow命令进行安装)。示例代码中,打开原始图片、创建透明的水印图层、绘制水印文…

计模式篇(Java):桥接模式

上一篇:计模式篇(Java):适配器模式 九、桥接模式 需求示例 当我们对不同手机类型的不同品牌实现操作编程,如图: 那么它对应的类图就是 传统方式解决需求分析: 扩展性问题,如果需要在增加手机的样式&#x…

什么是业务逻辑攻击 (BLA),大家为什么一定要要关注它?

想象一下:您的开发团队刚推出了一款令人惊叹的全新应用程序,它具有顶级的API安全性,通过客户端保护对其进行了强化,甚至还设置了针对机器人攻击的防御措施。你感到这款产品很有安全保障,自己的团队出色地完成了工作。 …

SAP从入门到放弃系列之生产执行-领用与消耗概述

文章目录导航 一、生产物资领用1.1、概述1.2、项目中自开发领料功能方式一:创建预留的方式方式二:创建UB订单方式 二、生产投料 一、生产物资领用 1.1、概述 生产的备料方式因为企业的行业特点以及企业对材料库存管理的流程设置,企业使用的…

MATLAB | 高斯变量概率密度函数的理论与实际对比

一、仿真实验目的 生成一组高斯变量,并基于生成的数据统计其概率密度函数,与理论高斯概率密度函数进行对比,观察生成的高斯变量的概率分布。 二、解决思路 (1)利用randn函数生成高斯随机变量 (2&#xf…

利用Visual Studio 2022 导出目标dll API接口

利用Visual Studio 2022 导出目标dll API接口 操作路径: 指令如下: dumpbin /exports /out:C:\\Users\\Administrator\\Desktop\\PlantSimCore.txt C:\\Users\\Administrator\\Desktop\\PlantSimCore.dll dumpbin /exports /out:C:\\Users\\Administrator\\Desktop\\

Ubuntu18.04安装Qt5.14.2

一、安装 第一步: 官网Index of /archive/qt 下载安装包, 或者国内网址下载 https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.0/ 我安装的是QT5.14.2 中的 qt-opensource-linux-x64-5.14.2.run ; 第二步:ctrlT 打开终端输入命…

Python的Logging模块

1.日志的相关概念🍃 日志是指记录系统或应用程序运行状态、事件和错误信息的文件或数据。在计算机系统中,日志通常用于故障排除、性能分析、安全审计等方面。日志可以记录各种信息,如系统启动和关闭时间、应用程序的运行状态、用户登录和操作…

数字化就是做系统?广州数字化转型服务公司推荐

数字化转型是一个与数字化技术密切相关的概念,很多不了解数字化转型的企业往往会认为数字化转型就是提升企业的数字化技术应用水平和不断增加数字化系统的功能,也就是将数字化转型认为是做系统。但实际上,开利网络认为,数字化转型…

使用vtk在一个窗口中创建多个几何体

引言 该示例为官网上的例子。在一个窗口中创建了多个不同的几何体。 其效果如下: 示例 开发环境 使用QtCreator4.11.2,Qt5.14.2。使用的vtk9.2的库及其头文件。创建空项目。 示例代码 其pro文件中的内容: QT core#greaterThan(QT_MAJOR_V…

【产品文档】埋点需求文档模板

今天和大家免费分享埋点需求文档模板。埋点文档的目的是帮助开发人员准确地实施埋点,并确保收集到的数据符合预期,以便后续分析和改进产品。 【模板下载】 这个模板可以在 Axure高保真原型哦 小程序里免费下载哦 【文档截图】

微搭低代码实现横向滚动效果

目录 1 添加滚动容器2 滚动内容设置总结 在小程序场景中,有很多横向滚动的效果,比如我们的官方模板电商展示里就有一个横向滚动的效果,本篇我们解读一下横向滚动该如何实现 1 添加滚动容器 不管是横向滚动还是纵向滚动,我们都是依…

【Python】NLP参数控制模板

前言 学过AI的都知道训练一个模型需要调整很多参数,为了有效的管理这些参数、不至于让代码的参数写的乱七八糟,有必要写一套控制参数的模板。 argparser argparser是python当中的参数解析器,在NLP当中主要是用来接受和使用参数的。一个使用它…