Nodejs 利用 express 第三方模块 获取接口参数

Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架

Expresss 是一个第三方模块(在npm上可以下载),在使用它之前要先去下载它,在下载包之前要先创建项目,并通过npm init 创建package.json文件。


1、get接口参数  req.query属性

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');
});

1.1、post接口与get请求不同

表示的操作不同:get一般用来做查询,post一般用来添加;

传参不同:get的参数只能在请求行中通过查询字符串来传递, post一般是通过请求体(它也可以通过请求行来传递)来传递的。

2、post接口参数-

post一般是通过请求体来传递的,根据传递的参数的格式不同,分成三种情况来说

  • 传递普通键值对

  • 传递json

  • 传递form表单(涉及文件上传)

2.1、普通键值对参数-express.urlencoded()

用express.urlencoded()来获取请求体的参数 ,具体来说当content-type为x-www-form-urlencoded时,表示上传的普通简单键值对

// 1. 使用中间件
app.use(express.urlencoded());

app.post("/add",function(req,res){
    //2. 可以通过req.body来获取post传递的键值对	
    res.json(req.body)

})

2.2、json格式的参数-express.json()

使用express.json()来获取请求体中传递的json数据。

在post传递参数时,如果要传入的参数比较复杂(多级嵌套),则可以使用json格式上传。

app.use(express.json());
// 会自动加入req.body属性,这个属性中就包含了post请求所传入的参数

// 用来处理JSON格式的数据
app.post('/postJSON',(req,res)=>{
    // 后端收到post传参
    console.log(req.body);
    
    res.send('/postJSON')
})

2.3、form-data文件上传-multer包

multer包

Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。

涉及文件上传操作,则需要在服务器端额外使用第三方multer这个包(不属于express)来获取上传的信息。使用npm install multer安装后使用

使用multer包

1. 引入包
const multer = require('multer');
2. 配置
const upload = multer({dest:'uploads/'}) // 上传的文件会保存在这个目录下
// uploads表示一个目录名,你也可以设置成其它的 
//如果当前目录下没有uploads,它会自动创建uploads这个文件夹

3. 使用
// 这个路由使用第二个参数 .upload.single表示单文件上传, 'cover' 表示要上传的文件在本次上次数据中的键名。对应于前端页面上的:
//  <input type="file" name='cover'/>

app.post("/postfile", upload.single('cover'), function(req,res){
    // req.file 记录了文件上传的信息
    // req.body 记录了其它普通参数(非文件)的信息
	// 其它操作
})

3、理解接口传参

3.1请求报文:行,头,体

我们一般使用ajax技术请求接口,按http协议的约定,每个请求都有三个部分:

  • 请求: 保存了请求方式,地址,可以以查询字符串的格式附加小部分数据。

  • 请求:它可以附加很多信息,其中content-type用来约定请求体中保存的数据格式。

    content-type常见有三种取值:

content-type的值表示请求体的数据格式示例
application/x-www-form-urlencode普通键值对象a=2&c=1
application/jsonjson对象{a:1,b:{c:1}}
multipart/form-data上传文件file

请求: 本次请求携带的参数。至于这些参数到了后端应该如何解析出来,由请求头中的content-type来决定。

4、总结

传参方式前端 content-type后端框架express
请求行get方式req.query
请求体application/x-www-form-urlencodeapp.use(express.urlencoded()); req.body
请求体application/jsonapp.use(express.json()); req.body
请求体multipart/form-data1. 引入包 const multer = require('multer'); 2. 配置app.post('/apiname', upload.single(), req.body)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值