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

如何使用Fetch向json-server发送POST请求,为现有对象新增键值对而非全量提交

解决方案

你遇到的问题核心是两点:请求方法选择错误、代码存在语法问题,按以下步骤修改即可实现预期效果:

1. 问题根源说明

json-server默认的POST请求仅适用于数组类型的资源,会将提交的对象作为新元素插入数组。而你的questions是对象类型,需要局部更新新增键值对,应该使用PATCH请求。

2. 现有代码错误修正

  • 请求头的字段名写错:Content=type应为Content-Type
  • JSON.stringify的入参语法错误,需要构造合法的对象:键为生成的问题ID,值为问题对象

3. 修正后的完整代码

const saveQuestionHandler = async () => {
  const formatedQuestion = formatQuestion(
    optionOneText,
    optionTwoText,
    activeUser
  );
  // 构造需要新增的键值对
  const postData = {
    [formatedQuestion.id]: formatedQuestion
  };
  await fetch(`http://localhost:3001/questions`, {
    method: "PATCH", // 改用PATCH请求做局部更新
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(postData),
  });
};

4. 效果验证

发送上述请求后,json-server会将你提交的键值对直接合并到原有的questions对象中,不会覆盖原有数据,最终结构和你预期的完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:57:03