如何在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的路由规则:
- 在项目根目录创建
routes.json文件,添加以下配置:
{ "/data/:parentId/children/:childId": "/data/:parentId/children/:childId" }
- 启动json-server时指定路由文件:
json-server --watch your-db-file.json --routes routes.json
- 现在可以直接发送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
相关产品推荐
相关产品推荐

