Express.js 请求参数解析与校验

前言

在使用 Express.js 进行开发时,我们难免要处理请求参数的问题。如何解析参数,如何校验参数的正确性,这些都是前端工程师需要掌握的技能。本文将会详细介绍 Express.js 的参数解析与校验,并提供示例代码进行演示。

Express.js 参数解析

Express.js 中内置了多种中间件来解析请求参数,如 body-parsercookie-parser 等等。这里我们以 body-parser 中间件为例子进行介绍。

body-parser 中间件可以解析 POST、PUT、DELETE 等请求方法的请求体,并把解析后的数据绑定到 req.body 上。使用方法如下:

const express = require('express')
const bodyParser = require('body-parser')

const app = express()

// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// 解析 application/json
app.use(bodyParser.json())

以上代码将 body-parser 中间件挂载到了 Express.js 应用程序上,并对 application/x-www-form-urlencodedapplication/json 两种请求格式进行了解析,解析结果分别保存在 req.body 中。

Express.js 参数校验

我们经常会遇到参数校验的场景,比如校验手机号码格式、邮箱格式,检查传入的是不是数字等等。如何在 Express.js 中完成这些校验呢?这里我们推荐使用 express-validator 库。

express-validator 库具有易用性和可扩展性,支持自定义校验函数、多语言支持等特性。使用方法如下:

const express = require('express')
const { check, validationResult } = require('express-validator')

const app = express()

app.post('/user', [
  check('username').notEmpty(),
  check('email').isEmail(),
  check('age').isInt()
], (req, res) => {
  const errors = validationResult(req)
  if (!errors.isEmpty()) {
    return res.status(400).json({ errors: errors.array() })
  }
  // 业务逻辑代码
})

以上代码中,我们对 /user 接口的参数进行了校验,要求 username 字段不能为空,email 字段必须符合邮箱格式,age 字段必须是整数。使用 validationResult(req) 函数检查校验结果是否有误,如果有误则返回 errors 数组。最后根据检验结果返回不同的响应。

总结

Express.js 提供了许多内置中间件来帮助开发者解析和校验请求参数,并且支持自定义校验函数。开发者可以根据自身的业务需求选择合适的校验方式,提高代码的健壮性和可维护性。

代码示例:Github

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6596e452eb4cecbf2da968a0


纠错反馈