JSON 服务器 - 将数据发布到数组中的特定对象中
Posted
技术标签:
【中文标题】JSON 服务器 - 将数据发布到数组中的特定对象中【英文标题】:JSON server - post data into specific object in array 【发布时间】:2020-04-22 03:08:42 【问题描述】:我正在练习 fetch api 并且在发布数据时遇到问题...在第一步中我发布到“http://localhost:3003/users”并且它工作正常 -> 代码:
(async () =>
const res = await fetch('http://localhost:3003/users',
method: 'POST',
body: JSON.stringify( name, password ),
headers:
'Content-Type': 'application/json'
);
但是在另一个组件中(第二步)我有这个代码:
useEffect(() =>
(async () =>
try
const resp = await fetch(`http://localhost:3003/users/$userID`,
method: 'POST',
body: JSON.stringify( tasks: [1, 2, 3] ),
headers:
'Content-Type': 'application/json'
).then(res => console.log(res));
catch (err)
console.error(err);
)();
, [userID]);
登录到控制台后,得到了这个:
Response type: "cors", url: "http://localhost:3003/users/0", redirected: false, status: 404, ok: false, …
body: (...)
bodyUsed: false
headers: Headers
ok: false
redirected: false
status: 404
statusText: "Not Found"
type: "cors"
url: "http://localhost:3003/users/0"
但是当我转到http://localhost:3003/users/0 时,我可以看到用户,所以似乎 url 有效...当然,当我删除 $userID 时它有效,但是数组被添加为最后一个对象,而不是这个特定用户...更重要的是 - http://localhost:3003/users/$userID 与 GET 方法一起使用。
问题是 - 如何将数据发布到 JSON 服务器中的数组中的单个对象??
db.json:
"users": [
"id": 0,
"name": "Ola",
"password": "12345"
,
"name": "newuser",
"password": "newuser",
"id": 1
]
表单提交检查是否有同名的用户;如果没有,请发布新用户
【问题讨论】:
你使用什么样的网络服务器? 我正在使用 json-server 你能发布你的 db.json 文件吗 是的 - 我在上面添加了 【参考方案1】:已解决
我使用了错误的方法 - POST 而不是 PATCH
【讨论】:
【参考方案2】:因此,当您发布某些内容时,在您的情况下,您将其发布到用户数组
所以应该这样试试
fetch(`http://localhost:3003/users`)
在你的身体里你需要传递 id
id:`$userId` tasks: [1, 2, 3]
更新这些东西并检查。
或
更新
因为它正在向用户对象添加新属性,所以需要使用 Patch 而不是 Post
您可以在here阅读更多内容
【讨论】:
它不起作用 - 现在我有 500 和内部服务器错误 我明白了 - 我在获取请求中使用了错误的方法(POST 而不是 PATCH)。无论如何谢谢;) 我已对其进行了更新,请检查并投票,以便对其他人有所帮助以上是关于JSON 服务器 - 将数据发布到数组中的特定对象中的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 数组发布到 Android 中的 Web 服务
如何将夹具中的不同 JSON 对象映射到 cypress 中的特定规范测试文件