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

构建名言存储REST API时POST请求验证失败问题排查

问题分析与解决

核心问题1:POST请求验证失败

提示cite字段必填但请求明明携带了该字段,原因有两点:

  • 请求头的Content-Type写错了,你写的是application.json,正确的MIME类型应为application/json(没有多余的点)
  • 若Express未配置JSON解析中间件,无法识别JSON格式的请求体,会导致req.body为空,自然取不到cite字段的值

核心问题2:移除required后仅返回id

此时req.body依然为空,创建的Quote实例只有MongoDB自动生成的_id,没有cite和author字段,所以返回结果仅包含id。

解决方案

  1. 修正请求的Content-Type
    把POST请求的Content-Type改为正确格式:

    POST  http://localhost:3000/quotes
    Content-Type: application/json
    
    {
        "cite": "Accept the things to which fate binds you, and love the people with whom fate brings you together,but do so with all your heart.",
        "author": "Marcus Aurelius"
    }
    
  2. 添加Express JSON解析中间件
    在你的主应用文件(如app.js/server.js)中加入以下代码,确保Express能解析JSON请求体:

    const express = require('express');
    const app = express();
    
    // 关键:添加JSON解析中间件
    app.use(express.json());
    
    // 挂载路由
    const quotesRouter = require('./routes/quotes');
    app.use('/quotes', quotesRouter);
    
  3. 保留Schema的required配置
    你的Schema中cite字段的required: true配置是正确的,无需移除,修复上述问题后验证即可正常通过。

完成以上操作后,重新发送POST请求,就能正常创建并返回包含cite、author和_id的完整Quote对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:54:23