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

如何在Postman中通过json-server向嵌套JSON数据发送PUT请求?

如何用json-server修改嵌套的子对象属性

你之前用http://localhost:3000/data/1/11发送PUT请求失败,是因为json-server默认路由规则不支持直接访问嵌套在children数组里的子元素——11是data[0].children里的元素ID,不是顶层data数组的资源ID。

下面两种方法可以解决这个问题:

方法1:更新整个父元素(无需额外配置)

json-server默认只能直接操作顶层数组的资源,所以需要先获取父元素,修改嵌套的子对象后再整体更新:

  • 发送GET请求到http://localhost:3000/data/1,获取id为1的完整对象(包含children数组)
  • 在本地修改children数组中id为"11"的对象属性(比如修改name或url)
  • 将修改后的完整父对象作为请求体,发送PUT请求到http://localhost:3000/data/1

示例请求体(修改Clothes的name为"Men's Clothes"):

{
  "id": "1",
  "name": "Amazon",
  "image": "data:image/png;base64,iVBORw0KGgoAAA",
  "children": [
    {
      "id": "11",
      "name": "Men's Clothes",
      "image": "data:image/png;base64,iVBORw0KG",
      "url": "http://www.google.com"
    },
    {
      "id": "12",
      "name": "Crockery",
      "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ",
      "url": "http://www.google.com"
    },
    {
      "id": "13",
      "name": "Home Appliances",
      "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEA",
      "url": "http://www.google.com"
    }
  ]
}

方法2:配置自定义路由(直接更新子元素)

如果想直接通过路由访问子元素,可以自定义json-server的路由规则:

  1. 在项目根目录创建routes.json文件,添加以下配置:
{
  "/data/:parentId/children/:childId": "/data/:parentId/children/:childId"
}
  1. 启动json-server时指定路由文件:
json-server --watch your-db-file.json --routes routes.json
  1. 现在可以直接发送PUT请求到http://localhost:3000/data/1/children/11,请求体只需要包含修改后的子对象:
{
  "id": "11",
  "name": "Men's Clothes",
  "image": "data:image/png;base64,iVBORw0KG",
  "url": "http://www.google.com"
}

内容的提问来源于stack exchange,提问作者Syed Abdul Hannan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:30:13