发送 POST 请求时出现 422 错误

Getting 422 ERROR when sending a POST request

提问人:Vasile Midrigan 提问时间:10/5/2023 最后编辑:PhilVasile Midrigan 更新时间:10/5/2023 访问量:54

问:

这是我使用的代码:

  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 错误,通过一些研究可以看出:

* 错误 422 是一个 HTTP 代码,它告诉您服务器无法处理您的请求,尽管它理解它。错误代码的全称是 422“不可处理的实体”。简而言之,该错误意味着您正在发出服务器理解的请求,但它无法处理它。

还有另一个帖子似乎在我的情况下不起作用:400 与 422 对数据发布的回应

以下是有关创建产品的文档(这是我尝试做的): https://commercejs.com/docs/api/#create-product

JavaScript ReactJS 发布 提取 API 商务 .js

评论

0赞 President James K. Polk 10/5/2023
也许您在标题中输入的任何内容都格式不正确或在某种程度上不正确。"X-Authorization"
0赞 Vasile Midrigan 10/5/2023
@PresidentJamesK.Polk 我提供的密钥没有问题,我猜它没有问题,因为它是必需的,如果我不提供,它会请求它,如果密钥错误,那么我会得到错误 401,它说密钥是错误的。所以我认为应该有别的东西。
0赞 President James K. Polk 10/5/2023
是的,我只是猜测。文档说:422 - 验证验证错误。提交的数据缺少某些内容,或格式错误。我不知道这是否有多大帮助。
0赞 Evert 10/5/2023
通常,422 用于您的请求正文有问题的情况。
1赞 Evert 10/5/2023
根据文档,完整的错误在响应正文中。

答:

0赞 Vasile Midrigan 10/5/2023 #1

问题在于我发送的数据的格式。我应该以这种格式发送它(问题正文),我想我很困惑地认为正文的大括号实际上意味着一个对象,我想现在这实际上不是正确的,大括号包裹了您发送到服务器的数据,所以就我而言,我没有发送文档所需的对象产品 {}, 但相反,我发送的是名称:“三星”和价格:345,这是服务器无法接受的。无论如何,感谢您的建议。下次最好注意服务器的期望以及我们实际发送的内容,以防我们收到 422 错误。

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