post接口
post无参数
// 引入express模块
const express = require('express');
// 创建express实例
const app = express();
// 设置post接口
// 参数1:接口地址,参数2:回调函数,用来设置接口功能
app.post('/post',function(req,res){
// req是请求对象 res是响应对象
res.send({name:"abc"})
})
// 监听端口
app.listen('8088', () => {
console.log('8088');
});
普通键值对参数
- 获取post普通键值对数据,处理post请求的参数,要通过第三方模块
body-parser
来解析。 - 当content-type为x-www-form-urlencoded时,表示上传的是普通简单的键值对 。
- 通过postman测试,对应的设置如下:
一般要先下载body-parser这个包。
npm install body-parser
- 下载express时,也自动下载了body-parser这个包,可以在node_modules中查看到,可以直接使用。
步骤
// 引入包
const express = require('express');
const bp = require('body-parser');
// 创建express实例
const app = express();
// 使用包
// 使用bp包之前需要先进行配置,因为bp默认采用的是qs包进行url编码转换
// 如果希望使用核心模块进行处理,必须进行以下设置:
// 下面这句话的含义为:使用核心模块querystring进行处理操作
app.use(bp.urlencoded({ extended: false }));
// 设置post接口
app.post('/admin/addCate', (req, res) => {
// bp模块给req添加了一个属性,称为body,是对象结构的post请求参数
console.log(req.body);
// 可以通过req.body来获取post传递的键值对
res.send('ok');
});
// 3 监听端口
app.listen(8000, () => {
console.log('监听了8000');
});
文件上传
- 如果post涉及文件上传操作,则会要使用
multer
这个包来获取上传的信息。
enctype="multipart/form-data"
通过postman测试,对应的设置如下:
步骤
1.安装multer包
npm install multer
2.使用
// 引入包(模块)
const express = require('express');
// multer包用来进行上传文件的接收处理
const multer = require('multer');
// random包可以生成随机字符串
const random = require('string-random');
// 创建express实例
const app = express();
// 使用multer前需要先进行配置:
// 1.基本设置方式(只设置存储位置),文件保存后,默认没有后缀名
// let upload = multer({ dest: './uploads' });
// 上传的文件会保存在这个目录下,uploads表示一个目录名,可以设置成其它的
// 2.详细设置方式(配置)
let upload = multer({
storage: multer.diskStorage({
destination: (req, file, callback) => {
// 参数1用来设置错误信息,正常处理传null即可
// 参数2为存储地址
callback(null, './uploads');
},
filename: (req, file, callback) => {
// 参数2:是最终设置给文件的文件名称,设置随机文件名称,并设置后缀信息即可
// random()中的数值表示随机字符串的字符个数
callback(null, random(18) + file.originalname);
}
})
});
// 设置接口,当某个接口需要进行文件上传处理时,给指定接口设置上传处理操作即可
// upload.single()中传入上传文件的请求参数名(键名)
// upload.single表示单文件上传
// 'file' 表示要上传的文件在本次上传数据中的键名。类似于<input type="file" name='file'/>
app.post('/fileupload', upload.single('file'), (req, res) => {
// multer 给 req.file 中保存了文件的相关信息
console.log(req.file);
res.send('ok');
});
// 3 监听端口
app.listen(8000, () => { console.log('监听8000成功..'); })
说明:
- 如果当前目录下没有uploads,它会自动创建uploads这个文件夹。