博客
关于我
express中的get post use处理,链式操作,封装中间件
阅读量:402 次
发布时间:2019-03-05

本文共 2794 字,大约阅读时间需要 9 分钟。

Express 开发指南:从 GET 到 POST 的数据处理与文件上传

1. 获取 GET 请求的数据

在 Express 中处理 GET 请求的表单数据非常简单,因为无需额外的解析工具。客户端提交的数据通过 req.query 接收,数据格式为 JSON。

客户端代码示例

    
用户名:
密码:

服务端代码示例

const express = require('express');let server = express();server.listen(8080);// 获取 GET 请求的数据server.get('/', (req, res) => {    console.log(req.query);});

2. 处理 POST 请求的数据

对于 POST 请求,Express 需要使用 body-parser 插件来解析客户端提交的表单数据。req.body 提供了获取 POST 数据的接口。

安装并配置 body-parser

const express = require('express');const bodyParser = require('body-parser');let server = express();server.listen(8080);// 配置 body-parser 解析 POST 数据server.use(bodyParser.urlencoded({ extended: true }));// 处理 POST 请求server.post('/', (req, res) => {    console.log(req.body);});

POST 请求的常见用途

  • 上传数据
  • 解析上传文件

3. 处理文件上传

当需要上传文件时,可以使用 multer 插件来解析 multipart/form-data 格式的数据。以下是一个完整的文件上传示例:

安装并配置 multer

const express = require('express');const multer = require('multer');const fs = require('fs');const path = require('path');let server = express();server.listen(8080);// 定义上传文件的路径let multerObj = multer({ dest: './www/upload/' });// 注册 multer 中间件server.use(multerObj.any());// 处理 POST 请求server.post('/', (req, res) => {    console.log(req.files[0]);        // 重命名上传文件    let newName = req.files[0].originalname;    fs.rename(req.files[0].path, newName, (err) => {        if (err) {            console.log('文件重命名失败');            res.send('失败');        } else {            console.log('文件重命名成功');            res.send('成功');        }    });});

客户端代码示例

    
上传文件:

4. Express 的链式操作

Express 的中间件处理支持链式调用,next() 方法用于调用下一个中间件或最终的响应函数。

链式操作示例

const express = require('express');let server = express();server.listen(8080);// 链式调用 next() 函数server.use('/', (req, res, next) => {    console.log('a');    next();});server.use('/', (req, res, next) => {    console.log('b');});// 输出:a, b

5. 自定义中间件

你可以编写自己的中间件,通过 next() 调用链式函数,并添加自定义属性到请求对象上。

自定义中间件示例

const express = require('express');let server = express();server.listen(8080);// 响应所有请求server.use((req, res, next) => {    req.body = 12;    req.a = 'dd';    next();});// 处理根目录请求server.use('/', (req, res) => {    console.log(req.body);    console.log(req.a);});

6. 实现自定义的 body-parser

如果需要自定义解析 POST 请求体数据的中间件,可以按照以下步骤实现:

实现步骤

  • 安装所需依赖项:
  • npm install querystring
    1. 编写中间件代码:
    2. const express = require('express');const querystring = require('querystring');let server = express();server.listen(8080);// 实现自定义中间件server.use((req, res, next) => {    let str = '';        // 收集数据    req.on('data', (data) => {        str += data;    });        // 解析数据    req.on('end', () => {        req.body = querystring.parse(str);        next();    });});// 处理根目录请求server.use('/', (req, res) => {    console.log(req.body);});

      通过以上方法,你可以根据具体需求定制 Express 应用的数据处理逻辑。

    转载地址:http://gckzz.baihongyu.com/

    你可能感兴趣的文章
    Python float - str - 浮动怪异
    查看>>
    Python Flower库:分布式任务管理与监控
    查看>>
    Python for 循环和迭代器行为
    查看>>
    Python For循环多次返回
    查看>>
    python frame_python3 selenium自动化 frame表单嵌套的切换方法
    查看>>
    Python ftplib - 指定端口
    查看>>
    Python furl库:一键搞定复杂URL操作
    查看>>
    Python GC 也会关闭文件吗?
    查看>>
    python gen_key.py 报错 提示找不到OpenSSL lib
    查看>>
    python getattrribute_Python学习——面向对象高级之反射
    查看>>
    Python进阶语法:字典推导式
    查看>>
    python gil_Python中GIL的使用详解
    查看>>
    python glob.glob使用
    查看>>
    python glob的安装和使用
    查看>>
    Python google drive API 下载,文件在哪里?
    查看>>
    Python GPS 模块:读取最新的 GPS 数据
    查看>>
    python grpc入门
    查看>>
    python gRPC测试helloworld
    查看>>
    python gRPC简单示例
    查看>>
    Python GUI 开发:全面指南
    查看>>