You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman测试表单提交API:firstName与lastName验证规则不生效

问题分析与解决方案

核心问题

你代码里的body()和validationResult()函数来自express-validator库,但你既没安装这个库,也没导入相关函数。这直接导致firstName和lastName的验证规则完全没执行,请求会直接跳过验证逻辑进入后续处理,所以不管输入什么内容都会返回200 OK。另外你还重复注册了urlencoded中间件,虽然不影响功能,但可以清理掉冗余代码。

解决步骤

  1. 安装express-validator库
    在项目根目录执行命令:
npm install express-validator
  1. 导入验证所需函数
    在代码顶部添加导入语句:
const { body, validationResult } = require('express-validator');
  1. 清理重复中间件
    删除app.use(bodyParser.urlencoded({ extended: true }));这一行——Express 4.16+已经内置了body-parser的功能,express.urlencoded足够处理表单数据。

修正后的完整代码

const express = require('express');
const { body, validationResult } = require('express-validator');
const app = express();
const port = 3000;

// Serve static files from the public directory
app.use(express.static('public'));

// Parse incoming form submissions
app.use(express.urlencoded({ extended: true }));

// Handle form submission
app.post(
    '/submit-form',
    [
      body('firstName')
        .isAlpha()
        .isLength({ min: 2 })
        .withMessage('First name must be at least 2 letters and contain only letters.'),
      body('lastName')
        .isAlpha()
        .isLength({ min: 2 })
        .withMessage('Last name must be at least 2 letters and contain only letters.'),
      body('email')
        .isEmail()
        .withMessage('Invalid email format.'),
      body('message')
        .trim()
        .notEmpty()
        .withMessage('Message cannot be empty.'),
    ],
     (req, res) => {
      const errors = validationResult(req);
      if (!errors.isEmpty()) {
        return res.status(400).json({ errors: errors.array() });
      }

      const firstName = req.body.firstName;
      const lastName = req.body.lastName;
      const email = req.body.email;
      const message = req.body.message;

  // Send a response back to the client
  res.status(200).send('Form submitted successfully');
});

// Route to display a confirmation message
app.get('/confirmation', (req, res) => {
    // Code to display confirmation message 
    res.status(200).send('Thank you for submitting the form!');
});

// Start server
app.listen(3000, () => console.log('Server started on port 3000'));

额外提示

  • 如果需要支持带空格的姓名(比如"Mary Ann"),可以把isAlpha()改成isAlpha('en-US', { ignore: ' ' }),忽略空格字符。
  • 测试时确保Postman的请求方式为POST,表单数据格式选择x-www-form-urlencoded,和中间件解析格式匹配。

内容的提问来源于stack exchange,提问作者jjc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:30:44