express

本文详细介绍了Express.js,一个基于Node.js的web开发框架,用于快速构建网页服务和接口。讲解了如何搭建基本服务器、监听请求、响应数据、获取参数、托管静态资源、设置路由以及使用中间件。还涵盖了模块化路由、错误处理中间件以及Express内置和第三方中间件的使用。此外,文中强调了中间件的特性及其在应用中的重要性。
摘要由CSDN通过智能技术生成

express简介

express是基于node.js平台,快速、开放、极简的web开发框架,是一个第三方的包;
express可以提供网页服务和接口;

使用express搭建基本的服务器

安装express npm i express@4.17.1(@4.17.1是版本号)

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

express监听请求

// req: request 请求对象; res: response 响应对象
app.get(路径, function (req, res) {});
app.post(路径, function (req, res) {});

express响应数据
在监听事件的处理函数中,通过形参来获取请求对象和响应对象;

响应对象.send() 发送响应数据;这个方法支持返回字符串、对象、数组等多种数据格式,并且可以自动解决中文的乱码;对象和数组会自动转化为json格式的字符串;

express获取参数
get请求的查询参数可以用req.query得到,得到的参数格式是一个对象;
路径参数可以用req.params得到,得到的参数也是一个对象;
路径参数:
/user/:uname/:age —— 用 : 拼接的就是路径参数

express托管静态资源

app.use(express.static(资源路径));
app.use('/url前缀', express.static(资源路径));
// 注意:1.静态资源可以托管多个
// 2.如果静态资源访问路径相同,以先托管的为准
// 3.默认开发资源中的index.html

express路由

路由:路由就是url请求地址与服务器处理函数之间的对应关系;

路由的基本使用:
直接挂载在app实例上:

const express = require('express');
const app = express();
app.get('/', (req, res) => {
	res.send('Hello World!');
});

app.listen(80);

模块化路由:

// 创建路由模块
const express = require('express');
const router = express.Router();

// 挂载路由在router上
router.get('/user/list', (req, res) => {
	res.send('用户列表数据');
});

// 向外暴露路由模块
module.exports = router;

// 在需要使用路由模块的js文件中引入路由模块
const router = require('./router.js');
app.use(router);
app.use('/api', router);
// 路由模块挂载可以加前缀,一个服务器可以挂载多个路由模块

express中间件

中间件:指业务流程中间的处理环节,本质是一个函数,中间件的形参列表中,必须包含一个next参数,next函数是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件或路由;

中间件的作用:在上游的中间件中,统一处理某些操作,方便下游的中间件或路由使用完成业务;

定义中间件

function middleware(req,res,next) {
	console.log('这是一个中间件函数');
	next();
}

中间件可以使用多个,在app.use中使用就是全局的中间件,在路由中使用就是局部的中间件;

全局中间件:

app.use((req,res,next) => {
	console.log('这是一个中间件函数');
	next();
});

局部中间件:

定义多个局部中间件时可以将中间件函数写在一个数组内;

app.get('/',(req,res,next) => {
	console.log('这是一个中间件函数');
	next();
},(req, res) => {
	res.send('数据');
});

中间件的特点
1.next函数;中间件必定包含一个next函数,并在函数结束的时候调用next函数;
2.中间件有先后顺序;
3.多个中间件使用的req和res参数是同一个;

中间件的分类和注意事项

中间件分为五类:应用级别中间件、路由级别中间件、错误级别中间件、express内置中间件、第三方中间件;

应用级别中间件就是直接绑定在app实例上的中间件;

路由级别的中间件就是绑定在express.Router()实例上的中间件;

错误级别的中间件是用来捕获项目中发生的异常错误,防止项目崩溃的问题,错误级别中间件的function处理函数中有4个形参,分别是(err, req, res, next);
注意:错误级别中间件必须在所有路由之后

express内置中间件
express.static : 托管静态资源;
express.json :处理post请求提交的json数据,使用req.body接收;

app.use(express.json());
app.post('/', (req,res) => {
	const body = req.body;
});

express.urlencoded :处理post请求提交的表单数据,使用req.body接收;

app.use(express.urlencoded({ extended: false }));
app.post('/', (req,res) => {
	const body = req.body;
});

第三方中间件:第三方开发出来的中间件;

注意事项:
1.除了错误级别中间件,其余中间件必须在路由之前注册;
2.客户端发送的请求,可以连续调用多个中间件进行处理;
3.执行完中间件的代码后,必须调用next函数;
4.next函数的调用之后不允许再写代码;
5.多个中间件共享相同的req和res参数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值