当前位置:网站首页 > 数据科学与大数据 > 正文

Node学习(五)022-处理静态资源——自定义中间件处理post提交的数据 & 将接收到的数据,赋值给req.body & 使用express和body-parser中间件处理post提交数据

Node学习(五)022-处理静态资源——自定义中间件处理post提交的数据 & 将接收到的数据,赋值给req.body & 使用express和body-parser中间件处理post提交数据

2.6 自定义中间件处理post提交的数据

思路:

  • 如果是POST方式的请求,则接受数据。并将数据绑定到req对象的body属性上,然后next
  • 如果不是POST方式的请求,则直接next
app.use((req, res, next) => { 
    // 判断,看是否是POST方式的请求 if (req.method === 'POST') { 
    // 这里的代码和之前一样,还是接收数据 let str = ''; req.on('data', (chunk) => { 
    str += chunk; }); req.on('end', () => { 
    // 将接收到的数据,赋值给req.body // req.body属性本来不存在,是自定义的,你也可以用其他的名字 req.body = querystring.parse(str); // querystring.parse是将字符串转成对象 next(); }); } else { 
    // 不是POST方式的请求,继续向下走 next(); } }) 

在这里插入图片描述

实例

01-使用中间件来处理POST提交的数据.js

const querystring = require('querystring'); const express = require('express'); const app = express(); app.listen(3000, () => console.log('服务器启动了')); // 定义中间件,处理POST提交的数据 app.use((req, res, next) => { 
    // console.log(req.method); // POST if (req.method === 'POST') { 
    // 是POST方式的请求,则接收浏览器提交过来的数据 // 1. 定义空字符串 let str = ''; // 2. 注册req的data事件 req.on('data', (chunk) => { 
    str += chunk; }); // 3. 注册req的end事件 req.on('end', () => { 
    // console.log(str); // username=123%40123.com&pwd=123 // 把接收到的数据,添加到req对象的一个自定义属性中 req.body = querystring.parse(str); next(); }); } else { 
    next(); } }); // 定义接口 loginCheck,接口要接收浏览器提交的账号和密码 app.post('/loginCheck', (req, res) => { 
    console.log(req.body); // { username: '123@123.com', pwd: '123' } }); app.post('/reg', (req, res) => { 
    console.log(req.body); // { abc: '123@123.com', bcd: '123' } }); app.post('/add', (req, res) => { 
    }); 

1-postman验证接口-post请求

在这里插入图片描述

2-代码事件-打印验证

在这里插入图片描述

2.7 使用body-parser中间件处理post提交数据

前面,为了理解中间件,都是自定义的中间件,其实,关于接收POST请求体的中间件也早就存在了,它就是body-parser

// 安装 // 找好文件夹 npm install body-parser 

代码:

// 如果请求头的 Content-Type为 application/x-www-form-urlencoded,则将请求体赋值给req.body app.use(bodyParser.urlencoded({ 
   extended: false})); 
实例

02-使用body-parser来接收POST提交的数据.js

const querystring = require('querystring'); const express = require('express'); const app = express(); app.listen(3000, () => console.log('服务器启动了')); // 使用body-parser,处理POST提交的数据 const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ 
    extended: false })); // 定义接口 loginCheck,接口要接收浏览器提交的账号和密码 app.post('/loginCheck', (req, res) => { 
    console.log(req.body); // { username: '123@123.com', pwd: '123' } }); app.post('/reg', (req, res) => { 
    console.log(req.body); // { abc: '123@123.com', bcd: '123' } }); app.post('/add', (req, res) => { 
    }); 

1-postman验证接口-post请求

在这里插入图片描述

2-代码事件-打印验证

在这里插入图片描述

2.8 整体代码

在这里插入图片描述

// 1. 加载express和body-parser const express = require('express'); const bodyParser = require('body-parser'); // 2. 创建app对象 const app = express(); // 3. 开启服务 app.listen(3000, () => console.log('开启服务')); // 4. 定义中间件,处理所有的静态文件 app.use(express.static('manager')); // 5. 定义中间件,处理POST请求提交的数据 app.use(bodyParser.urlencoded({ 
   extended: false})); // 6/7/8.... 各种接口 app.get('/time', (req, res) => { 
    res.send(Date.now() + ''); }); app.post('/loginCheck', (req, res) => { 
    console.log(req.body); // { username: '123@123.com', pwd: '123' } }); app.post('/reg', (req, res) => { 
    console.log(req.body); // { abc: '123@123.com', bcd: '123' } }); 

效果同上

到此这篇Node学习(五)022-处理静态资源——自定义中间件处理post提交的数据 & 将接收到的数据,赋值给req.body & 使用express和body-parser中间件处理post提交数据的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Node学习(六)03-SQL语句——添加数据insert into、修改数据update、删除数据delete from、连接查询select from之内连接、左连接、右连接和定义别名2024-11-29 07:00:07
  • Node学习(七)01-mysql基本用法——Node中使用MySQL模块的5个步骤 & select查询语句-查询的结果是一个数组,数组中的每个对象就是一行数据 & SQL中有多个占位符2024-11-29 07:00:07
  • Node学习(七)02-mysql基本用法——insert添加语句之基本添加、带占位符的形式 & SQL中query方法为问号传递一个对象添加sql数据2024-11-29 07:00:07
  • Node学习(七)03-mysql基本用法——update修改语句-数据修改需两个占位符& delete删除语句-结果是个对象& multipleStatements为true时可一次性执行多条SQL2024-11-29 07:00:07
  • Node学习(九)021-管理系统之添加英雄——完成本地图片预览之生成临时url-URL.createObjectURL(文件对象)& FormData收集表单各项数据之ajax请求写法-post请求2024-11-29 07:00:07
  • js之对象分类、数据类型分类和存储位置、函数 function介绍、变量的作用域2024-11-29 07:00:07
  • js中,封装一个判断所有数据类型的方法getType,入参为任意变量,返回值为该参数类型的字符串形式2024-11-29 07:00:07
  • 表格当前行-对象数据传递给弹框 & 父组件传对象数据给子组件 & 接口写法-增删改查-post-get-delete2024-11-29 07:00:07
  • jdbc使用java连接数据库学习笔记2024-11-29 07:00:07
  • 《第一行代码》 第七章:跨程序共享数据-内容提供器2024-11-29 07:00:07
  • 全屏图片