当前位置: 首页 > news >正文

React Native 之 接口请求(十四)

React Native 提供了和 web 标准一致的Fetch API,用于满足开发者访问网络的需求。如果你之前使用过XMLHttpRequest(即俗称的 ajax)或是其他的网络 API,那么 Fetch 用起来将会相当容易上手。

发起请求API(fetch)

fetch('https://mywebsite.com/endpoint/', {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    firstParam: 'yourValue',
    secondParam: 'yourOtherValue',
  }),
});
//Content-Type有很多种,对应 body 的格式也有区别。到底应该采用什么样的Content-Type取决于服务器端,所以请和服务器端的开发人员沟通确定清楚。
//除了常用的上面一种,还有下面传统的网页表单
//headers: {
//    'Content-Type': 'application/x-www-form-urlencoded',
//  },

处理服务器的响应数据

网络请求天然是一种异步操作。Fetch 方法会返回一个Promise,这种模式可以简化异步风格的代码。

// 注意这个方法前面有async关键字
async function getMoviesFromApi() {
  try {
    // 注意这里的await语句,其所在的函数必须有async关键字声明
    let response = await fetch(
      'https://facebook.github.io/react-native/movies.json',
    );
    let responseJson = await response.json();
    return responseJson.movies;
  } catch (error) {
    console.error(error);
  }
}

默认情况下,iOS 会阻止所有 http 的请求,以督促开发者使用 https。如果你仍然需要使用 http 协议,那么首先需要添加一个 App Transport Security 的例外。从 Android9 开始,也会默认阻止 http 请求。

使用其他的网络库

React Native 中已经内置了XMLHttpRequest API(也就是俗称的 ajax)。一些基于 XMLHttpRequest 封装的第三方库也可以使用,例如frisbee或是axios等。jQuery不支持,因为 jQuery 中还使用了很多浏览器中才有而 RN 中没有的东西。

WebSocket 支持

const ws = new WebSocket('ws://host.com/path');

ws.onopen = () => {
  // connection opened
  ws.send('something'); // send a message
};

ws.onmessage = e => {
  // a message was received
  console.log(e.data);
};

ws.onerror = e => {
  // an error occurred
  console.log(e.message);
};

ws.onclose = e => {
  // connection closed
  console.log(e.code, e.reason);
};

相关文章:

  • 调用其他程序(不用import call tranction)
  • C语言结构体详解
  • 第一章详解
  • 用Python Pygame做的一些好玩的小游戏
  • 转运机器人负载最高可达 1000kg,重复精度高达±5mm
  • 新人攻略:避开这3大坑,让老员工主动带你飞!
  • 常用损失函数学习
  • 521源码-免费代码基础学习-PHP如何运用变量教程
  • 线程生命周期
  • 音频剪辑技巧:音频压缩怎么不损失质量?分享6个小妙招
  • mysql内存结构
  • UTF-8、GBK等格式互相转换 【Windows/Linux 通用】
  • 英语学习笔记25——Mrs. Smith‘s kitchen
  • 探索大模型技术:AI的未来与挑战
  • Jmeter例题分析-作业一
  • Docker部署Minio小记
  • C:技术面试总结
  • C# 实现腾讯云 IM 常用 REST API 之会话管理
  • 2024年华为OD机试真题-停车场车辆统计-C++-OD统一考试(C卷D卷)
  • 全栈式数据统计:SqlAlchemy怎样连接MsSql Server获取视图列表
  • 浙商银行外部监事高强无法履职:已被查,曾任建行浙江省分行行长
  • 夜读丨跷脚牛肉乐翘脚
  • 郭继孚被撤销全国政协委员资格,此前为北京交通发展研究院长
  • 国务院安委会对辽宁辽阳一饭店重大火灾事故查处挂牌督办
  • 证券时报:“好房子”标准即将全面落地,购房者有哪些新期待
  • 影子调查丨危房之下,百余住户搬离梦嘉商贸楼