【问题标题】:Dummy Rest API not working on phone React NativeDummy Rest API 在手机 React Native 上不起作用
【发布时间】:2020-10-05 15:08:48
【问题描述】:

我正在使用http://dummy.restapiexample.com/ API。在使用 POSTMAN 并使用 POST 创建新员工时,它似乎可以工作。但是当我在 React Native 中使用 axios 并做同样的事情时,POST 正在返回成功响应但是当我尝试获取所有新员工的 GET 方法我没有看到在 POSTMAN 上工作的新员工 这是我的 POST 方法

create(){
    axios.post('http://dummy.restapiexample.com/api/v1/create',{
      "name":this.state.name,
      "salary":this.state.sal,
      "age":this.state.age
    }).then((res)=>console.log(res.data)).then(()=>this.setState({createModal:false})).catch(err=>console.log(err))
  }

这是我的 GET 方法

async getData(){
    await axios.get('http://dummy.restapiexample.com/api/v1/employees').then((res)=>this.setState({employees:res.data.data},()=>console.log(res.data.data))).catch((err)=>console.log(err))
  }

【问题讨论】:

  • 您可以尝试从邮递员那里复制 json 并替换您的 axios 正在使用的 json,吗?那么让我们看看,如果它仍然无法添加,
  • 是的,我尝试对值进行硬编码,但它似乎仍然不起作用
  • 控制台日志是否在 GET 方法中工作?
  • 是的,它只返回初始值,而不是应该包含新创建用户的响应
  • 邮递员是否返回了您创建的新值?

标签: api react-native axios fetch


【解决方案1】:

从您的示例代码看来,您正在通过 http 进行调用。请注意,除非您明确指定允许通过 http 访问的域,否则此类调用会被 iOS 和 Android 阻止。

更多关于网络的信息可以在这里找到: https://reactnative.dev/docs/network

默认情况下,iOS 将阻止任何未使用 SSL 加密的请求。 如果您需要从明文 URL(以 http 开头)获取 您首先需要添加一个应用传输安全例外。如果你 提前知道您需要访问哪些域,更重要的是 安全地仅为这些域添加例外;如果域是 直到运行时才知道您可以完全禁用 ATS。但是请注意 从 2017 年 1 月起,Apple 的 App Store 审核将要求 禁用 ATS 的合理理由。请参阅 Apple 的文档 了解更多信息。

要么允许域进行非安全请求,要么使用 https。

【讨论】:

  • 什么样的错误?请提供更多信息。您的端点是否配置为处理 https 请求?
  • 我没有创建这个端点,它只是我在网上找到的东西,并且使用 http 也是第一次给出响应,但是使用 POST 后它没有给出更新的列表。跨度>
  • 啊,好的。我没有意识到 dummy.restapiexample.com 是一个实际的网站。是的,无法通过 https 访问该网站。您将添加一个传输安全异常 reactnative.dev/docs/… 或者您必须使用可以通过 https 访问的 API。
  • 我在模拟器上试了一下,好像可以,谢谢你的帮助
  • 那么问题出在哪里?
【解决方案2】:

问题与在 Android 设备上运行有关。一旦在模拟器上运行,它似乎工作正常

【讨论】:

    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多