文章目录
1. 起步
2021 最新最全 Express 教程(基础+实战+原理),B 站最好,没有之一
1.1 文档
1.2 安装
npm i express
安装接口测试工具Postman
https://www.postman.com/downloads/
1.3 Hello World
创建app.js文件
const express = require("express");
const app = express();
const port = 3000 // 默认3000
app.get("/", (req, res) => {
res.send("Hello World");
});
app.listen(3000, () => {
console.log(`Server running at http://localhost:${
port}/`);
});
运行app.js
打开网页
可以使用nodemon启动程序
这样可以检测文件变化,自动更新程序
Postman接口测试
2. 路由基础
路由是指确定应用程序响应客户端对特定端点的请求,该特定端点是URI和特定HTTP请求方法(GET/POST等)
每个路由可以具有一个或多个处理程序函数,这些函数在匹配该路由时执行
路由定义采用以下结构
app.METHOD(path, handle)
app
Express实例METHOD
小写的HTTP请求方法path
服务器上的路由路径handle
当路由匹配时执行的处理函数
更多路由相关
https://www.expressjs.com.cn/guide/routing.html
demo
- 在根路径响应 ‘Hello World’
app.get('/', (req, res) => {
res.send('Hello World')
})
- 在根路径响应POST请求
app.post('/', (req, res) => {
res.send('Got a POST request')
})
- 响应对/user路径的PUT请求
app.put("/user", (req, res) => {
res.send("Got a POST request at /user");
});
- 响应对/user路径的DELETE 请求
app.delete("/user", (req, res) => {
res.send("Got a DELETE request at /user");
});
3. 请求和响应
Express 应用使用路由回调函数的参数 request
和 response
对象来处理请求和响应的数据
app.get('/', (request, response)=>{
// ...
})
Express不对Node.js已有的特性进行二次抽象,只是在它之上拓展了web应用所需的基本功能
- 内部使用的还是http模块
- 请求对象继承自
http.IncomingMessage
- 响应对象继承自
http.ServerResponse
Express拓展了HTTP模块中的请求和响应对象
3.1 请求对象 request
API
Node.js https://nodejs.org/dist/latest-v14.x/docs/api/http.html
Express https://www.expressjs.com.cn/4x/api.html#req
request
对象代表HTTP请求,并具有请求查询字符串,参数,正文,HTTP标头等属性
app.get("/", (request, res) => {
console.log("request.url:", request.url);
console.log("request.method:", request.method);
console.log("request.headers:", request.headers);
console.log('请求参数:', request.query)
res.send("Hello World");
});
postman发送请求
控制台输出
3.2 响应对象 response
Node.js https://nodejs.org/dist/latest-v14.x/docs/api/http.html
Express https://www.expressjs.com.cn/4x/api.html#res
app.get("/", (request, response) => {
// 设置响应状态码
// response.statusCode = 201
// response.write('a')
// response.write('b')
// response.write('c')
// 结束响应
// response.end()
// response.end('efg')
// response.send("Hello World");
// response.send({
// name: 'yk'
// })
response.cookie('yk', 'kk')
response.status(