React Native 之 接口请求(八)

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

发起请求API(fetch)

javascript 复制代码
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,这种模式可以简化异步风格的代码。

javascript 复制代码
// 注意这个方法前面有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 支持

javascript 复制代码
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);
};
相关推荐
Dragon Wu15 分钟前
Web前端 认证token的安全存储策略
前端·javascript·安全·react.js·前端框架
Xxtaoaooo34 分钟前
React Native 跨平台鸿蒙开发实战:性能优化与启动加速技巧
react native·react.js·harmonyos
Easonmax44 分钟前
基础入门 React Native 鸿蒙跨平台开发:有趣编程——模拟手电筒
react native·react.js·harmonyos
Xxtaoaooo1 小时前
React Native跨平台鸿蒙开发实战:JS 与 ArkTS Native的通信机制详解
javascript·react native·harmonyos
Easonmax1 小时前
基础入门 React Native 鸿蒙跨平台开发:有趣编程——模拟一个简单的空调遥控器
react native·react.js·harmonyos
Xxtaoaooo1 小时前
React Native 跨平台鸿蒙开发实战:网络请求与鸿蒙分布式能力集成
网络·react native·harmonyos
Easonmax1 小时前
基础入门 React Native 鸿蒙跨平台开发:有趣编程——模拟洗衣机
react native·react.js·harmonyos
摘星编程2 小时前
用React Native开发OpenHarmony应用:DrawerNavigation侧滑关闭
javascript·react native·react.js
Xxtaoaooo2 小时前
React Native 跨平台鸿蒙开发实战:构建 CI/CD 与自动化发布流程
react native·ci/cd·harmonyos
Xxtaoaooo2 小时前
React Native 跨平台鸿蒙开发实战:状态管理与数据持久化方案
react native·react.js·harmonyos