關於React Native使用axios進行網絡請求的方法

在前端開發中,能夠完成數據請求的方式有很多,如Ajax、jQuery ajax、axios和fetch等。不過,隨著技術的發展,現在能夠看到的基本上也就axios和fetch兩種。

axios是一個基於Promise的Http網絡庫,可運行在瀏覽器端和Node.js中,Vue應用的網絡請求基本都是使用它完成的。axios有很多優秀的特性,如支持請求的攔截和響應、取消請求、JSON自動轉換、客戶端防禦XSRF等。

使用axios之前,需要先在項目中安裝axios插件,安裝命令如下。

//npm 
npm install axios --save
//yarn
yarn add react-native-axios 

作為一款優秀的網絡請求庫,axios支持基本的GET、POST、DELET和PUT等請求。比如,使用axios進行GET請求時就可以使用axios.get()方法和使用axios(config { … })兩種方式,如下所示。

axios.get('/getData', {
    params: { 
      id: 123
    }
  }).then(function (response) {
    console.log(response);
  })

axios({
  method: 'GET',
  url: '/getData',
  params: {
    id: 123,
  }
}).then(function (response) {
    console.log(response);
}); 

可以看到,如果直接使用axios進行網絡請求會產生大量的冗餘代碼,所以在實際開發過程中,還需要對axios請求進行一些封裝,以方便後期的使用,如下所示。

可以看到,如果直接使用axios進行網絡請求會產生大量的冗餘代碼,所以在實際開發過程中,還需要對axios請求進行一些封裝,以方便後期的使用,如下所示。

const request = axios.create({
  transformResponse: [
    function (data) {
      return data;
    },
  ],
});

const defaultOptions = {                    //處理默認配置
  url: '',
  userAgent: 'BIZSTREAM Library',
  authentication: {
    integration: {
      access_token: undefined,
    },
  },
};

class Bizstream {
  init(options) {
    this.configuration = {...defaultOptions, ...options};
    this.base_url = this.configuration.url;
    this.root_path = '';
  }

  post(path, params, data, type = ADMIN_TYPE) {
    return this.send(path, 'POST', params, data, type);
  }

  get(path, params, data, type = ADMIN_TYPE) {
    return this.send(path, 'GET', params, data, type);
  }

  send(path, method, params, data, type, headersOption) {
    const url = `${this.base_url}${this.root_path}${path}`;
    const headers = {
      'User-Agent': this.configuration.userAgent,
      'Content-Type': 'application/json',
      ...headersOption,
    };

    return new Promise((resolve, reject) => {
      request({url, method, headers, params, data}).then(response => {
        …. //處理返回結果
      });
    });
  }
}

export const bizStream = new Bizstream();

經過封裝處理後,進行網絡請求的時候就方便瞭許多,並且對於一些通用的返回結果我們也在網絡層進行瞭處理。實際使用時,開發者隻需要按照要求傳入需要的參數,然後再通過異步函數處理返回的結果即可,如下所示。

//GET請求
const hotMovie='';
const data = await apiRequest.get(hotMovie);
//POST請求
let baseUrl = '';
let param = {
   pageNumber: 0,
   cityCd: 31,
 };
const data = await apiRequest.post(baseUrl, param);

到此這篇關於關於React Native使用axios進行網絡請求的方法的文章就介紹到這瞭,更多相關React Native網絡請求內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: