这是我使用的代码:
const url = new URL("https://api.chec.io/v1/products");
const headers = {
"X-Authorization": `${process.env.NEXT_PUBLIC_CHEC_PUBLIC_KEY_SECRET}`,
"Accept": "application/json",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify({
name: 'Samsung',
price: '345',
}),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((err) => console.log(err));
我正在尝试发送 POST 请求以使用 Commercejs API 为电子商务项目创建产品。然而,我得到的结果是 422 ERROR,通过一点研究可以看出:
* 错误 422 是一个 HTTP 代码,告诉您服务器无法处理您的请求,尽管它理解您的请求。错误代码的全称是422“无法处理的实体”。简而言之,该错误意味着您正在发出服务器可以理解的请求,但它无法处理它。*
还有另一篇文章似乎不适用于我的情况: 400 与 422 对数据 POST 的响应
这是有关创建产品的文档(这是我尝试做的): https://commercejs.com/docs/api/#create-product
问题出在我发送的数据格式上。我应该以这种格式发送它(问题是正文),我想我很困惑,认为正文的大括号实际上意味着一个对象,我想现在这实际上并不正确,大括号包含您的数据发送到服务器,所以在我的例子中,我没有发送文档所需的对象产品 {},而是发送名称:“三星”和价格:345,这是服务器不可接受的。不管怎样,谢谢你的建议。下次最好注意服务器期望的内容以及我们实际发送的内容,以防出现 422 错误。
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify({
product: {
name: 'Iphone',
price: 4535,
}
}),
})