发送 POST 请求时收到 422 错误

问题描述 投票:0回答:1

这是我使用的代码:

  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

javascript reactjs post fetch-api commerce.js
1个回答
0
投票

问题出在我发送的数据格式上。我应该以这种格式发送它(问题是正文),我想我很困惑,认为正文的大括号实际上意味着一个对象,我想现在这实际上并不正确,大括号包含您的数据发送到服务器,所以在我的例子中,我没有发送文档所需的对象产品 {},而是发送名称:“三星”和价格:345,这是服务器不可接受的。不管怎样,谢谢你的建议。下次最好注意服务器期望的内容以及我们实际发送的内容,以防出现 422 错误。

fetch(url, {
    method: "POST",
    headers: headers,
    body: JSON.stringify({
      product: {
        name: 'Iphone', 
        price: 4535,
      }
    }),
 })

© www.soinside.com 2019 - 2024. All rights reserved.