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

使用json-server与json-schema-faker时POST接口仅提交ID字段求助

解决json-server POST数据仅存入id的问题

看起来你遇到的问题是POST请求到json-server时,只有id被保存,其他字段丢失。我来帮你一步步排查和解决这个问题:

首先排查请求本身的问题

这是最常见的原因,先确认以下几点:

  • 请求URL是否正确:确保你是POST到/tests端点(对应db.json里的tests数组),而不是根路径或者其他错误路径。
  • 请求头是否正确设置:必须在请求头里添加Content-Type: application/json,否则json-server无法正确解析请求体中的JSON数据,会导致字段丢失。
  • 请求体格式是否正确:确保你发送的是完整的JSON对象,包含所有需要的字段。比如:
    {
      "name": "新测试条目",
      "pro1": 75,
      "pro2": "2024-05-20T14:20:00Z",
      "pro3": true,
      "pro4": 4,
      "pro5": 9
    }
    
    注意:不需要手动传入id,json-server会自动为你生成唯一的id值,手动传id可能导致冲突,但不会直接导致其他字段丢失。

验证Mock数据生成是否正确

先确认你的json-schema-faker生成的db.json是正常的:
运行生成脚本后,打开./src/api/db.json,检查tests数组里的每个对象是否包含所有required字段(id、name、pro1等)。比如正确的db.json应该是这样的:

{
  "tests": [
    {
      "id": 1,
      "name": "Generated Name",
      "pro1": 60,
      "pro2": "2024-05-20T09:15:00Z",
      "pro3": false,
      "pro4": 2,
      "pro5": 5
    }
  ]
}

如果生成的文件是正常的,说明json-schema-faker的配置没有问题,问题集中在POST请求环节。

添加调试中间件排查请求

如果上面的检查都没问题,可以自定义json-server的启动脚本,添加中间件来打印请求体,确认服务器是否收到了所有字段:
创建server.js文件:

const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('./src/api/db.json');
const middlewares = jsonServer.defaults();

// 调试用中间件:打印POST请求的body
server.use((req, res, next) => {
  if (req.method === 'POST') {
    console.log('POST请求体内容:', req.body);
  }
  next();
});

server.use(middlewares);
server.use(router);
server.listen(3000, () => {
  console.log('JSON Server 已启动在 http://localhost:3000');
});

然后用node server.js启动服务器,再次发送POST请求,查看控制台输出的请求体。如果控制台里的请求体只有id,那说明前端发送的请求本身就有问题;如果请求体包含所有字段但还是只存id,那可能需要检查json-server的版本或者是否有其他自定义配置干扰。

前端请求示例(参考)

如果你是用fetch发送请求,正确的写法应该是这样的:

fetch('http://localhost:3000/tests', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: '手动添加的测试项',
    pro1: 85,
    pro2: new Date().toISOString(),
    pro3: true,
    pro4: 7,
    pro5: 3
  })
})
.then(res => res.json())
.then(data => console.log('保存成功:', data))
.catch(err => console.error('保存失败:', err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:55:02