在前端开发中,可能实现数据申请的形式有很多,如Ajax、jQuery ajax、axios和fetch等。不过,随着技术的倒退,当初可能看到的基本上也就axios和fetch两种。

axios是一个基于Promise的Http网络库,可运行在浏览器端和Node.js中,Vue利用的网络申请根本都是应用它实现的。axios有很多优良的个性,如反对申请的拦挡和响应、勾销申请、JSON主动转换、客户端进攻XSRF等。

应用axios之前,须要先在我的项目中装置axios插件,装置命令如下。

//npm npm install axios --save//yarnyarn 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申请进行一些封装,以不便前期的应用,如下所示。

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);