文章目录
express 创建服务器
首先,在你的项目文件夹 expressDemo1
中初始化项目并进入该项目:
$ npm init -y
$ cd expressDemo1
接下来,通过以下命令在本地安装 Express:
$ npm i express -D
在终端中输入以下命令启动项目:
$ node app.js
在浏览器中输入 localhost:3000
就会发起一个 GET 请求,并且能够看到服务器返回的数据。
路由和中间件
Express 框架完全由路由和中间件构成。从本质上讲,一个 Express 应用程序就是为了监听不同的路径并调用各种中间件。
const express = require('express');
const app = express();
// 当客户端发起 GET 请求时,如果请求的路径是 '/',则返回 'Hello World!哈哈' 字符串
app.get('/', (req, res) => {
res.send('Hello World!哈哈');
});
// 启动服务器,我可以通过 IP 地址和端口号访问这台服务器,例如:127.0.0.1:3000 或者 localhost:3000
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
中间件本质上就是一个函数,也可以称之为插件。在 Express 中我们更习惯称之为中间件。
路由
路由用于处理前端不同的请求,并返回不同的数据,这就是所谓的后端路由。例如,如果 /users/login
接口用于登录,/users/reg
接口用于注册。
通过监听不同的路径执行不同的函数来处理不同的请求。这些路由通常在 app
上使用,我们也称之为应用级别的路由。
通过路由挂载中间件:
app.use(中间件监听的路径, 中间件函数);
use
函数可以设置两个参数:
- 第一个参数是设置的路径,如果不传参数,默认是
*
,匹配任何路径。 - 第二个参数是回调函数,如果路径匹配成功,就会执行该函数。通常情况下,我们使用第三方封装的函数作为中间件。
路由的匹配顺序是从上到下的,如果已经匹配到了某个路径,后续路径就不会再被执行了。
因此,我们现在不使用 *
,后面会介绍如何避免这种情况。
HTTP 请求的方式有很多种,use
函数可以监听到所有方式的请求。
除了 use
,还可以专门监听某种请求:
app.get
监听 GET 请求app.post
监听 POST 请求app.put
监听 PUT 请求app.patch
监听 PATCH 请求app.delete
监听 DELETE 请求
通过 app.use (path, fn)
,当前端发起请求的路径匹配到 path
时,将执行后面的函数 fn
:
path
称之为路径fn
称之为中间件函数
通过 app.use
,我们可以让不同的路径(接口地址)执行不同的函数,这就是所谓的路由(注意 use
可以监听不同的请求方式,如 GET、POST 等)。
例如:
app.use('*', fn1); // 和下方等效 app.use(fn1);
app.use('/about-me', fn1);
app.use('/login', fn2);
中间件
中间件本质上就是一个函数。
中间件函数中有三个形参:
req
是请求对象res
是服务器的响应对象next
一旦调用,中间件会将请求交给下一个中间件去处理。如果不调用next
,请求处理将在此结束,不会传递给其他中间件处理。
例如,在 test.js
文件中使用 app.js
中的中间件 test
:
启动项目后,访问 localhost:3000/a
,test
中间件会被调用两次。访问 localhost:3000
则只会调用一次 test
中间件。