无法在 'Window' 上执行 'fetch':使用 GET/HEAD 方法的请求不能在 react-admin 中有正文

Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body in react-admin

我正在使用 react-admin 框架,并且我已经编写了自己的 DataProvider。我试图在创建 User 时实现,同时创建 UserPossession 的实例。我的代码波纹管实现了这一点,但是 react-admin Front-end 只显示警告消息:

Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body 

我检查了开发者工具中的网络选项卡,对服务器的每个请求都是正确的,没有错误。这让我感到困惑和坚持,因为我不知道这个警告是什么意思,也不知道为什么会出现。

我的代码是 convertDataRequestToHTTP 常量的一部分,如下所示:

if (resource === 'User') {
  url = `${apiUrl}/${resource}`;
  options.body = params.data;
  httpClient(url, {
    method: 'POST',
    body: JSON.stringify(options.body),
  })
  .then(response => (
    url = `${apiUrl}/Location`,
    options.method = 'POST',
    options.body = JSON.stringify({
       "odata.type": "HardwareDatabase.UserPossession",
       "Name": response.json.Login,
       "UserId": response.json.Id
    }),
    httpClient(url, {
      method: options.method,
      body: options.body
    })
  ));
}

如果您对代码有任何疑问,我可以澄清。

感谢您提前提出任何想法。

既然你说这个代码片段是 convertDataRequestToHTTP 的一部分,我可能会看到这个问题。 httpClient 不能在此常量中使用,因为它会创建对 API 或您的情况的重复调用,此警告。正确的方法是只声明 options 常量。

url = `${apiUrl}/${resource}`;
options.body = JSON.stringifiy(params.data);
options.method = 'POST';

稍后在将响应从 OData 转换为强制 React Admin 格式的常量中,说明 httpClient

 params.data = {
    "odata.type": "HardwareDatabase.UserPossession",
    "Name": response.json.Login,
    "UserId": response.json.Id
 };
 httpClient(`${apiUrl}/Location`, {
    method: 'POST',
    body: JSON.stringify(params.data),
 })