express是什么
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
- 可以设置中间件来响应 HTTP 请求。
- 定义了路由表用于执行不同的 HTTP 请求动作。
- 可以通过向模板传递参数来动态渲染 HTML 页面。
注: 本文不会涉及到第三点。
express响应hello world
我们创建一个1.js文件,然后在该文件夹下安装express
npm init
npm i express
然后在1.js中开始coding:
// 引入express
const express = require('express')
// 创建服务器
const app = express()
// 接受 get 且 url 为 / 的请求
app.get('/', (req,res) => {
// send会检测响应内容的类型,自动设置http状态码,响应的内容类型及编码
res.send('hello world')
})
// 监听3000端口
app.listen(3000)
然后通过node运行服务
node 1.js
我们访问localhost:3000
,即可在页面中看见hello world
。
新建请求
app.get('/menu', (req,res) => {
res.send({ name: '首页', key: 1 })
})
我们访问localhost:3000/menu
,即可在页面中看见{"name":"首页","key":1}
。
中间件
当我们想在某个函数做判断是否符合规则,是否放行;对一个请求进行多次处理时就需要中间件。
默认情况下从上到下匹配,一但匹配成功终止匹配;我们可以通过next将请求交给下个中间件,直到结束请求的中间件。
// 引入express
const express = require('express')
// 创建服务器
const app = express()
app.get('/menu', (req,res,next) => {
req.name = 'test'
next()
})
app.get('/menu', (req,res) => {
res.send(req.name)
})
// 监听3000端口
app.listen(3000)
use
中间件有什么用呢:
- 路由保护,如果用户登录了,允许访问对应内容;如果用户没有登陆,直接拒绝。
- 当我们想拦截所有请求时,如此时更新服务器,我们应该拦截住所有请求,统一返回禁止登录,就可以通过use去拦截住所有:
- 自定义404页面
- 错误处理
app.use((req,res,next) => {
res.send('禁止登录')
})
同样,我们可以匹配路由,如:
app.use('/menu', (req,res,next) => {
res.send('禁止访问menu')
})
注: 如果是404页面,由于前面说过处理是按照顺序来着,此时我们应该把此路由放在所有页面的最下面。
在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败;错误处理中间件就是一个集中处理错误的地方。