Express学习5--Express实现post接口功能

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这个文件夹。
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值