我正在练习获取 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
}
]
}
表单提交检查是否存在具有此名称的用户;如果没有,则发布新用户
已解决
我使用了错误的方法 - 开机自检而不是补丁
因此,当您发布某些内容时,在您的情况下,您将其发布到 users 数组
所以应该以这种方式尝试
fetch(`http://localhost:3003/users`)
在你的身体里,你需要传递ID
{ id:`${userId}` tasks: [1, 2, 3] }
更新这些内容并检查。
或
更新
由于它向用户对象添加新属性需要使用补丁而不是 Post
您可以在此处阅读更多信息