博客
关于我
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/

    你可能感兴趣的文章
    Objective-C实现memset函数功能(附完整源码)
    查看>>
    Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
    查看>>
    Objective-C实现merge sort归并排序算法(附完整源码)
    查看>>
    Objective-C实现mergesort归并排序算法(附完整源码)
    查看>>
    Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
    查看>>
    Objective-C实现Miller-Rabin素性测试程序(附完整源码)
    查看>>
    Objective-C实现Miller-Rabin素性测试程序(附完整源码)
    查看>>
    Objective-C实现MinhashLSH算法(附完整源码)
    查看>>
    Objective-C实现MinHeap最小堆算法(附完整源码)
    查看>>
    Objective-C实现multilayer perceptron classifier多层感知器分类器算法(附完整源码)
    查看>>
    Objective-C实现n body simulationn体模拟算法(附完整源码)
    查看>>
    Objective-C实现naive string search字符串搜索算法(附完整源码)
    查看>>
    Objective-C实现natural sort自然排序算法(附完整源码)
    查看>>
    Objective-C实现nested brackets嵌套括号算法(附完整源码)
    查看>>
    Objective-C实现nevilles method多项式插值算法(附完整源码)
    查看>>
    Objective-C实现newtons second law of motion牛顿第二运动定律算法(附完整源码)
    查看>>
    Objective-C实现newton_raphson牛顿拉夫森算法(附完整源码)
    查看>>
    Objective-C实现NLP中文分词(附完整源码)
    查看>>
    Objective-C实现NLP中文分词(附完整源码)
    查看>>
    Objective-C实现not gate非门算法(附完整源码)
    查看>>