Express 框架基本用法以及相关知识点

Express框架基本用法包括安装、创建应用、监听请求和响应客户端

Express 框架基本用法

1.安装:

使用npm或cnpm将Express安装到项目中,命令为$ npm install express@4.17.1。安装后,还需安装一些额外的中间件,如body-parser、cookie-parser和multer,以处理不同类型的数据。

2.创建应用:

首先导入express模块,然后调用express()函数创建一个新的Express应用对象。例如,可以创建一个基本的Web服务器,代码如下:

const express = require('express');
const app = express();
app.listen(80, () => {console.log('express server running at http://127.0.0.1');
})

注:此代码会启动一个监听80端口的服务器。

3.监听请求:

使用app.get()和app.post()方法分别监听GET和POST请求。例如,要监听根路径(“/”)上的GET请求,可以使用以下代码:

app.get('/', function(req, res) {res.send('Hello World');
});

注:这样,当用户访问"http://127.0.0.1/“时,服务器将响应"Hello World”。

4.响应客户端:

通过res对象的send方法,可以将数据发送回客户端。除了文本,还可以发送JSON对象、状态码等。例如:

app.get('/user', function(req, res) {res.send({ name: 'zt', age: 20 });
});

注:此代码在访问"/user"时返回一个包含姓名和年龄的JSON对象。
综上所述,Express的基本用法涵盖了从安装、创建应用、监听请求到响应客户端的全过程,适用于快速搭建Web服务器和API接口服务器。

Express 框架新增知识

一.Express模块中请求对象

Express模块中的请求对象(req)是对HTTP请求的封装,它包含了请求查询字符串、参数、正文、HTTP标头等属性。

1.属性和方法

属性:
req.params: 包含命名路由参数的对象,例如在路径/user/:id中,:id可以通过req.params.id访问。
req.query: 包含GET请求查询字符串参数的对象,以键值对形式存储。
req.body: 包含POST请求参数的对象,需要使用如body-parser这样的中间件来解析请求体。
req.cookies: 包含从客户端传递过来的Cookies值的对象。
req.headers: 一个对象,包含了从客户端接收到的所有请求头信息。
req.ip: 表示客户端的IP地址。
req.path: 请求的路径部分,不包含查询字符串。
req.protocol: 指示所使用的协议,如HTTP或HTTPS。
req.secure: 如果连接使用的是HTTPS,则此属性为true。
req.originalUrl: 包含了原始请求URL和查询字符串的属性。
方法:
req.accepts([types]): 用于确定客户端是否接受一个或多个指定的MIME类型。该方法对于编写可提供多种内容类型的API非常有用。

2.请求对象使用示例

获取请求参数和路径:通过req.params可以获取路径参数;通过req.query可以获取URL查询字符串参数。
解析请求体:通常使用body-parser中间件来解析HTTP请求体,解析后的数据可通过req.body访问。
读取Cookie数据:通过req.cookies可以直接访问客户端传递的Cookie对象。
获取客户端的IP地址:req.ip属性包含了发起请求的客户端的IP地址信息。
查看请求的HTTP方法和原始URL:分别通过req.method和req.originalUrl可以得知请求的HTTP方法以及请求被发送时的完整URL。

二.Express模块中响应对象

1.属性

res.app:此属性指向创建响应对象的Express应用实例。这在有时候需要访问应用层面的对象或方法时非常有用。
res.headersSent:这是一个布尔属性,用于表示HTTP头是否已经发送。在发送任何响应体之前,该属性的值为false,发送之后变为true。这个属性对于确定是否还可以修改响应头很有用。
res.locals:这是一个可用来存储响应本地变量的对象,常用于中间件之间传递数据。与req.app相同,但主要用于响应相关的数据。
res.req:此属性是对原始请求对象的引用,在某些情况下,如在一个中间件函数内部创建了对请求对象的引用,则可能会用到这个属性。

2.方法

res.append():此方法用于在响应头中追加指定的字段值。如果字段已存在,新的值将被追加到已有值后面,使用逗号分隔。
res.download():此方法用于向客户端发送一个文件,通常用于文件下载操作。它设置适当的头信息,以便浏览器进行下载操作而非显示文件内容。
res.end():此方法用于终结响应处理流程,它可以不带参数,也可以带有一个可选的响应体参数和一个字符编码参数。当不需要发送任何数据时调用此方法可以快速结束响应。
res.json():此方法用于发送一个JSON格式的响应。这个方法与res.send()相似,但是更专注于发送JSON数据。它还允许发送一些在严格JSON格式中不是合法值的数据,如null或undefined。
res.jsonp():此方法类似于res.json(),但是它支持JSONP(JSON with Padding),这意味着响应可以包含一个JSONP回调函数的包裹形式。
res.redirect():此方法用于执行一个重定向操作,可以将用户代理重定向到新的路径或外部URL。它也可以指定HTTP状态码,默认为302 Found。
res.render():此方法用于渲染视图模板并将结果作为HTML发送给客户端。这个方法常用于Web应用程序中,配合模板引擎使用,如ejs、pug等。
res.send():此方法用于发送各种类型的响应体数据,包括Buffer对象、字符串、纯对象或数组。根据数据类型自动设置适当的Content-Type头。

三.Express模块中的中间件

中间件在Express模块中扮演着至关重要的角色,它提供了一种灵活而强大的机制来处理HTTP请求,从而扩展了Express应用的功能。

1.基本概念:

Express中间件本质上是一个函数,它可以访问请求对象(req)、响应对象(res)和应用程序的请求-响应循环中的下一个中间件函数(通常由一个名为next的变量表示)。
中间件能够执行代码、修改请求和响应对象、结束请求-响应循环或调用下一个中间件函数。如果当前中间件函数没有结束请求-响应循环它必须通过调用next()方法将控制权传递给下一个中间件函数,否则,请求将保持挂起状态。

2.中间件类型:

应用级中间件通过app.use()或app.METHOD()函数绑定到应用程序对象的实例。
路由器级中间件类似于应用级中间件,但它绑定到express.Router()的实例。
错误处理中间件是一种特殊的中间件,用于捕获和处理应用程序中的错误。
Express提供了一些内置的中间件,如express.static(用于提供静态文件服务)、express.json(用于解析JSON数据)和express.urlencoded(用于解析URL编码数据)。
注:开发者还可以根据需要自定义中间件,以满足特定的业务逻辑或数据处理需求。

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

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

相关文章

Python 教程(二):语法与数据结构

目录 前言专栏列表语法特点实例代码基本数据类型变量命名规则赋值动态类型作用域示例代码 运算符list、set和dict 数据结构 区别1. list(列表)2. set(集合)3. dict(字典) 总结 前言 Python 是一种计算机编…

Linux调试器gdb

1.debug版本的文件才能调试 gcc默认编译生成的是release版本,在输入gcc编译指令时,要加-g,才会生成debug版本的可执行文件。 可以看到,code_dbug比code大,因为debug版本含有调试信息,往往比release版本的…

【BUG】已解决:SyntaxError:positional argument follows keyword argument

SyntaxError:positional argument follows keyword argument 目录 SyntaxError:positional argument follows keyword argument 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰&#xff0c…

uniapp 开发app使用renderjs操作dom

需求:把页面中的对话内容另存为一张图片保存到手机相册。 解决方案:这时我们需要使用到document对象创建一个dom对象计算对话内容的宽高、位置等,再利用canvas能力将内容绘制绘制成一张图保存。 现状:总所周知,非H5端&…

【SOC 芯片设计 DFT 学习专栏 -- DFT OCC 与 ATPG的介绍】

请阅读【嵌入式及芯片开发学必备专栏】 请阅读【芯片设计 DFT 学习系列 】 如有侵权,请联系删除 转自: 简矽芯学堂 简矽芯学堂 2024年01月18日 09:00 陕西 文章目录 OCC 介绍Fast ScanFull chip ATPGPartition ATPGHierarchical ATPG OCC 介绍 OCC&am…

微信小程序实现聊天界面,发送功能

.wxml <scroll-view scroll-y"true" style"height: {{windowHeight}}px;"><view wx:for"{{chatList}}" wx:for-index"index" wx:for-item"item" style"padding-top:{{index0?30:0}}rpx"><!-- 左…

力扣高频SQL 50题(基础版)第十题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第十题1661. 每台机器的进程平均运行时间题目说明思路分析实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题&#xff08;基础版&#xff09;第十题 1661. 每台机器的进程平均运行时间 题目说明 表: Activity…

Git merge

Git merge 参考文档&#xff1a; https://marsishandsome.github.io/2019/07/Three_Way_Merge https://git-scm.com/docs/merge-strategies https://stackoverflow.com/questions/56889406/how-does-git-compare-two-files-while-merging Git merge的目标是合并changes&#x…

idea一键为实体类赋值

file -> settings -> plugins -> marketplace 把这个插件装上 找个实体&#xff0c;选中&#xff0c;altenter进入edit界面 我是选择只保留右边这种生成方法&#xff0c;然后选择ok 返回到那个实体&#xff0c;选择&#xff0c;altenter generate生成

创建线程的几种方式

严格来讲&#xff0c;创建线程只有一种方式&#xff0c;就是实现Runnable接口&#xff0c;其他创建线程的方式也是对其封装。 继承Thread方式 public class Thread extends java.lang.Thread {Overridepublic void run() {super.run();} } 进入Thread可以看到&#xff0c;也是…

Spark实时(四):Strctured Streaming简单应用

文章目录 Strctured Streaming简单应用 一、Output Modes输出模式 二、Streaming Table API 三、​​​​​​​​​​​​​​Triggers 1、​​​​​​​unspecified&#xff08;默认模式&#xff09; 2、​​​​​​​​​​​​​​Fixed interval micro-batches&am…

利用Java调用人脸身份证比对接口

一、什么是人脸身份证比对接口&#xff1f; 人脸身份证比对接口是一种特定的 API 接口服务&#xff0c;主要用于将提供的人脸图片和对应的身份证照片/号码进行比对&#xff0c;以此验证其身份。 这种接口的功能基于复杂的人脸识别技术&#xff0c;一般通过使用人工智能和深度学…

C语言刷题小记2

前言 本篇博客还是为大家分享一些C语言的OJ题目&#xff0c;如果你感兴趣&#xff0c;希望大佬一键三连。多多支持。下面进入正文部分。 题目1竞选社长 分析&#xff1a;本题要求我们输入一串字符&#xff0c;并且统计个数的多少&#xff0c;那么我们可以通过getchar函数来获…

软件开发者消除edge浏览器下载时“此应用不安全”的拦截方法

当Microsoft Edge浏览器显示“此应用不安全”或者“已阻止此不安全的下载”这类警告时&#xff0c;通常是因为Windows Defender SmartScreen或者其他安全功能认为下载的文件可能存在安全风险。对于软件开发者来说&#xff0c;大概率是由于软件没有进行数字签名&#xff0c;导致…

【React】useState:状态更新规则详解

文章目录 一、基本用法二、直接修改状态 vs 使用 setState 更新状态三、对象状态的更新四、深层次对象的更新五、函数式更新六、优化性能的建议 在 React 中&#xff0c;useState 是一个非常重要的 Hook&#xff0c;用于在函数组件中添加状态管理功能。正确理解和使用 useState…

未来的智能交通系统:智能合约在交通管理中的应用前景

随着城市化进程的加快和交通问题日益突出&#xff0c;智能交通系统成为了解决城市交通拥堵和安全问题的重要手段。本文将探讨智能合约在未来智能交通系统中的应用前景&#xff0c;分析其在交通管理中的潜力和优势。 什么是智能交通系统&#xff1f; 智能交通系统利用先进的信息…

MySQL之索引及简单运用

索引&#xff1a; 什么是索引 索引是数据库中一种非常重要的数据结构&#xff0c;用于帮助快速查询数据库表中的数据。它就像一本书的目录&#xff0c;能够让你快速定位到书中的某个具体章节或内容&#xff0c;而不需要一页一页地翻阅整本书。 在数据库管理系统中&#xff0c;…

Linux下如何设置系统定时任务

在Linux系统中&#xff0c;用户可以使用cron工具来设置定时任务。cron是一个守护进程&#xff0c;用于在指定的时间间隔执行指定的命令或脚本。下面是在Linux系统中设置系统定时任务的步骤。 使用crontab命令编辑定时任务列表&#xff1a; crontab -e该命令会打开一个文本编辑…

设计模式 之 —— 单例模式

目录 什么是单例模式&#xff1f; 定义 单例模式的主要特点 单例模式的几种设计模式 1.懒汉式&#xff1a;线程不安全 2.懒汉式&#xff1a;线程安全 3.饿汉式 4.双重校验锁 单例模式的优缺点 优点&#xff1a; 缺点&#xff1a; 适用场景&#xff1a; 什么是单例模…

Highcharts 饼图:数据可视化的魅力

Highcharts 饼图:数据可视化的魅力 引言 在数据可视化的世界中,饼图作为一种经典且直观的图表类型,被广泛应用于各种领域。Highcharts,作为一个功能强大且易于使用的JavaScript图表库,为我们提供了创建精美饼图的便捷途径。本文将深入探讨Highcharts饼图的特点、应用场景…