Express框架
快速搭建简易服务器
1.创建项目并初始化
创建一个文件夹,作为我们的项目文件夹(不要起中文名),之后在此目录下启动终端,运行 npm i -y 初始化项目 生成package.json文件
2.下载 express 包
命令 : npm i express
3.快速创建服务器代码
// 0. 加载 Express
const express = require('express')
// 1. 调用 express() 得到一个 app
// 类似于 http.createServer()
const app = express()
// 2. 设置请求对应的处理函数
// 当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {
res.send('hello world')
})
// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))
说明:
- app.get('/')相当于添加事件监听:当用户以get方式求"/"时,它后面的回调函数会执行,其回调函数中的req,res与前面所学http模块保持一致。
- res.send()是exprss框架给res对象补充提供的方法(http模块中的res是没有这个方法的),用于结束本次请求。类似的还有res.json(), res.sendFile() 。
- express 框架会增强req,res的功能
托管静态资源-web服务器
目录结构:
// 导入 express
const express = require('express')
// 得到一个app对象, 启动服务
const app = express()
// 设置中间件,处理请求对应函数,静态托管
app.use(express.static('publish'))
app.listen(3006,()=>{
console.log('访问成功,请到 http://localhost:3006')
})
// 在本地 http://localhost:3000 即可看到托管的静页面
扩展:
限制前缀
// 限制访问前缀
app.use('/public', express.static('public'))
这意味着想要访问public下的内容,必须要在请求url中加上/public
路由和接口
路由(Routing)是由一个 URL(或者叫路径标识)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何处理响应客户端请求。每一个路由都可以有一个或者多个处理器函数,当匹配到路由时,这些个函数将被执行。
用express搭建简易接口
1.准备工作,先下载express包=> npm i express
2.编写完代码后(逻辑代码见下),执行 node 文件名.js 启动服务器
3.测试接口是否成功, get接口直接用浏览器打开或postman等测试软件,其他类型,都需要借助第三方工具
1.get接口
express框架会自动收集get类型的接口从url地址中传递的查询字符串参数,并自动保存在req对象的query属性中。我们直接来获取即可。
const express = require('express');
const app = express();
app.get('/get', function(req, res) {
// 获取到用户传递过来的查询字符串参数
console.log(req.query);
// 响应的数据
res.send({ name: 'abc' });
});
app.listen('8088', () => {
console.log('8088');
});
// 访问自己的 http://localhost:8088查看结果
或postman等测试软件看是否成功
2.post接口(普通键值对)
const express = require('express');
const app = express();
// 1. 使用中间件
app.use(express.urlencoded());
app.post("/add",function(req,res){
// 2. 可以通过req.body来获取post传递的键值对
console.log(req.body);
res.send({ name: 'abc' });
})
app.listen('8088', () => {
console.log('8088');
});
// 用postman等测试软件测试结果
3.post接口(json格式的参数)
在post传递参数时,如果要传入的参数比较复杂(多级嵌套),则可以使用json格式上传,如你要上传的参数:
let data = {
name:"abc",
address:{
"a":1,
"b":2,
"info":"c"
}
}
后端代码:
const express = require('express');
const app = express();
// 1. 使用中间件
app.use(express.json());
// 会自动加入req.body属性,这个属性中就包含了post请求所传入的参数
// 用来处理JSON格式的数据
app.post('/postJSON',(req,res)=>{
// 后端收到post传参
console.log(req.body);
res.send({ name: 'abc' });
})
app.listen('8088', () => {
console.log('8088');
});
4.post接口(form-data文件上传)
如果post涉及文件上传操作,则需要在服务器端额外使用第三方multer这个包(不属于express)来获取上传的信息。
Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。
1.安装包
npm install multer
2.代码
const express = require('express');
const app = express();
// 1. 引入包
const multer = require('multer');
// 2. 配置
const upload = multer({dest:'uploads/'}) // 上传的文件会保存在这个目录下
// uploads表示一个目录名,你也可以设置成其它的
// 3. 使用
// 这个路由使用第二个参数 .upload.single表示单文件上传, 'cover' 表示要上传的文件在本次上次数据中的键名。对应于前端页面上的:
app.post("/postfile",upload.single('cover'), (req,res)=>{
// req.file 记录了文件上传的信息
// req.body 记录了其它普通参数(非文件)的信息
// 其它操作
res.send({ name: 'abc' });
})
注意:
- 如果当前目录下没有uploads,它会自动创建uploads这个文件夹
upload.single只是处理了文件的上传。你仍可以通过req.body来获取其它参数