【问题标题】:React Native + Django DRF network error on POSTPOST 上的 React Native + Django DRF 网络错误
【发布时间】:2020-11-04 23:36:16
【问题描述】:

我正在开发一个 React Native 应用程序。作为后端,我使用的是 DJango DRF。我正在尝试发出 POST 请求以在后端创建新元素,这是我在 React 中的代码:

**API.JS**
const routes = {
  accounts: {
    get: () =>
      requestHelper({
        method: "get",
        url: "accounts/",
      }),
    post: (data) =>
      requestHelper({
        data,
        method: "post",
        url: "accounts/",
      }),
  },
};

**API CALL**
const formData = new FormData();

const image = {
  uri: data.image,
  name: data.timestamp + ".jpg",
  type: "image/jpeg",
};

_.map(data, (item, name) => {
   formData.append(name, item);
});
    
formData.append("image", image);

await api.accounts
    .post(formData)
    .then((res) => {
      console.log(res, "OK");
    })
    .catch((err) => {
      console.log(err);
    });
};

请求正在到达后端,并且正在数据库(包括图像)上创建新帐户。问题是,尽管 Django 返回 200_OK,但 api 调用将转到 catch 语句,并且控制台上出现此错误:

网络错误

堆栈跟踪:node_modules/axios/lib/core/createError.js:15:0 in node_modules/axios/lib/adapters/xhr.js:81:4 在 dispatchXhrRequest
node_modules/event-target-shim/dist/event-target-shim.js:818:20 在 EventTarget.prototype.dispatchEvent
node_modules/react-native/Libraries/Network/XMLHttpRequest.js:575:10 在 setReadyState
node_modules/react-native/Libraries/Network/XMLHttpRequest.js:389:6 in __didCompleteResponse node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js:189:10 在发射
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:425:19 在 __callFunction
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:112:6 在 __guard$argument_0
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:373:10 在 __guard
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:111:4 在 callFunctionReturnFlushedQueue [本机代码]:null in callFunctionReturnFlushedQueue

我认为不是图像问题,因为我已删除以进行测试并出现相同的错误。

【问题讨论】:

    标签: python reactjs django react-native django-rest-framework


    【解决方案1】:

    通常,当无法访问 REST API 服务器时,您会收到 Network Error。您是否为 Django 服务器设置了正确的 baseURLproxy? Django 服务器可能在 8000 上运行,而 React 默认情况下在 3000 上运行。

    您在服务器端看到请求的事实有点奇怪。它将表明用于处理成功响应的代码中可能存在错误/问题。您是否尝试删除该代码?是的,听起来可能很奇怪,只需删除console.log(res, "OK"); 看看会发生什么?

    【讨论】:

    • 嗨 pplonski。感谢您的回答。 baseURL 配置正确,否则不会创建帐户。请求到达后端就好了(Django 控制台显示对请求的 200 响应) [04/Nov/2020 14:29:52] "POST /api/accounts/ HTTP/1.1" 200 12438 不明白为什么 axios 是如果 Django 返回 200_OK,则进入 catch 语句
    • 你能展示代码来重现它吗? js端可能有错误,即使服务器响应200也会报错。
    • 当然可以,但是我怎样才能向您展示整个代码呢?
    • 请创建github repo,附上如何运行app的步骤
    猜你喜欢
    • 1970-01-01
    • 2021-04-18
    • 2022-10-31
    • 2022-06-18
    • 1970-01-01
    • 2020-08-25
    • 2020-08-22
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多