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

加强酒店网站建设的建议搜索引擎的四个组成部分及作用

加强酒店网站建设的建议,搜索引擎的四个组成部分及作用,网站建设公司济宁,做变性手术视频网站微信小程序的网络请求为什么要封装?封装使用有什么好处? 封装的目的是为了偷懒,试想一下每次都要wx.request,巴拉巴拉传一堆参数,是不是很麻烦,有些公共的参数例如header,baseUrl是不是可以封装…

微信小程序的网络请求为什么要封装?封装使用有什么好处?

封装的目的是为了偷懒,试想一下每次都要wx.request,巴拉巴拉传一堆参数,是不是很麻烦,有些公共的参数例如header,baseUrl是不是可以封装起少些一些代码。

同时也是为了避免回调地狱,例如一个请求要依赖于上一个请求的回调结果,那么我们就需要嵌套。这样一层一层的嵌套不利于代码维护。

综上就写个封装吧(我的就是简单封装了下,没有参照大神们的复杂封装,我就是为了单纯请求时候想少些几个参数)....

1.新建request.js文件

class WxRequest{
  constructor(){

  }
  defaults={
    baseUrl:'http://36.137.4.235:8080',
    header:{
      clientid:"e5cd7e4891bf95d1d19206ce24a7b32e",
      Authorization:"",
    }
  }
  interceptors={
    request:(config)=>{
      return config;
    },
    response:(response)=>{
      return response;
    }
  }
  request(options){
    let access_token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJtWFFhSEhZa01DQ3NuYkNpZmozWjNLN3dOaFZVRDdEMCIsImNsaWVudGlkIjoiZTVjZDdlNDg5MWJmOTVkMWQxOTIwNmNlMjRhN2IzMmUiLCJ0ZW5hbnRJZCI6IjAwMDAwMCIsInVzZXJJZCI6MSwidXNlck5hbWUiOiJhZG1pbiIsImRlcHRJZCI6MTAzLCJkZXB0TmFtZSI6IueglOWPkemDqOmXqCIsImRlcHRDYXRlZ29yeSI6IiJ9.qfyBJcuu5mEdxKzT3vkvPXxZOgbiHMvmvhEi2IiNpFE";
    this.defaults.header.Authorization="Bearer " + access_token
    options.url=this.defaults.baseUrl + options.url;
    options={...this.defaults,...options}
    return new Promise((resolve,reject)=>{
      wx.request({
        ...options,
        success:(res)=>{
          resolve(res)
        },
        fail:(err)=>{
          reject(err)
        }
      })
    })
  }
}

const instance = new WxRequest();
instance.interceptors.request=(config)=>{
  return config;
}
instance.interceptors.response=(response)=>{
  return response;
}
export default instance;

 上面我们就创建好了一个request.js文件,并且里面创建了一个Wx.Request类。并且实例化了一下。

下面我们看一下如何调用这个我们创建的实例化对象

 1.用request.js文件并且使用

import instance from "../../utils/request"

Page({

onLoad: function (options) {

    this.getList();

  },

  async getList(){

    let res = await instance.request({

      url:'/desktop/icon/list',

      method:"GET",

      data:{

        pageSize:"10",

        pageNum:"1",

        isAsc:"desc"

      }

    })

    console.log(res)

  

  },

})

 以上就是一个简单的封装方法,复制粘贴就能用。

里面有个问题,如何不写入async 和await 会这么么样?

没错,时返回一个promise对象。

2.完善请求-statusCode状态码

其实方法里面还有一些问题,这个问题就是,在小程序中,只要服务端返回了结果,就会进入到小程序的success中,那么当服务器返回的结果是401或者是500等结果,也同样进入到了success中,因此上述中就缺少了相关返回结果的判断,下面代码中我们加入statusCode的判断来完善风封装的请求。

我是直接写在了wx.request里面用 switch case 来判断的,你也可以写在别的地方。例如写在拦截器请求拦截器和响应拦截器中,我是觉得我开始参数合并、修改啥的都写在了方法里面,我就依旧在wx.request里面来写就算了。

class WxRequest{

  constructor(){

  }

  defaults={

    baseUrl:'http://36.137.4.235:8080',

    header:{

      clientid:"e5cd7e4891bf95d1d19206ce24a7b32e",

      Authorization:"",

    }

  }

  interceptors={

    request:(config)=>{

      return config;

    },

    response:(response)=>{

      return response;

    }

  }

  request(options){

    let access_token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJjOFJHelNVQ3RjMGVhWkJxV1VzY3lEb2V4T0dMbXB0ZiIsImNsaWVudGlkIjoiZTVjZDdlNDg5MWJmOTVkMWQxOTIwNmNlMjRhN2IzMmUiLCJ0ZW5hbnRJZCI6IjAwMDAwMCIsInVzZXJJZCI6MSwidXNlck5hbWUiOiJhZG1pbiIsImRlcHRJZCI6MTAzLCJkZXB0TmFtZSI6IueglOWPkemDqOmXqCIsImRlcHRDYXRlZ29yeSI6IiJ9.sacBfJ8qPOEICfFTpbxgRaQN2A368rZITV6_jwB4_-Y";

    this.defaults.header.Authorization="Bearer " + access_token

    options.url=this.defaults.baseUrl + options.url;

    options={...this.defaults,...options}

    return new Promise((resolve,reject)=>{

      wx.request({

        ...options,

        success:(res)=>{

          switch (res.data.code) {

            case 200:

              return resolve(res.data)

            case 401:

             wx.showModal({

              title: '系统提示',

              content: '登陆过期,请重新登录',

              showCancel:false,

              success (modalres) {

                if (modalres.confirm) {

                  console.log('用户点击确定');

                }

              }

             })

             return Promise.reject(res)

            default:

              wx.showToast({

                title: '系统更新中...',

                duration:3000

              })

              return Promise.reject(res)

        }

          

        },

        fail:(err)=>{

          reject(err)

        }

      })

    })

  }

}

const instance = new WxRequest();

instance.interceptors.request=(config)=>{

  return config;

}

instance.interceptors.response=(response)=>{

  return response;

}

export default instance;

2.使用的话参照之前1.使用就行了,没啥大变化。

3.封装更加便捷的方法

大家在用的时候,有没有发现,每次请求虽然比之前简单了,但是还是不够简单。下面我们利用request这个定义的方法,在创建几个更快捷的请求方法。 

class WxRequest{

  constructor(){

  }

  defaults={

    baseUrl:'http://36.137.4.235:8080',

    header:{

      clientid:"e5cd7e4891bf95d1d19206ce24a7b32e",

      Authorization:"",

    },

    method:"GET",

    data:null

  }

  interceptors={

    request:(config)=>{

      return config;

    },

    response:(response)=>{

      return response;

    }

  }

  request(options){

    let access_token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJjOFJHelNVQ3RjMGVhWkJxV1VzY3lEb2V4T0dMbXB0ZiIsImNsaWVudGlkIjoiZTVjZDdlNDg5MWJmOTVkMWQxOTIwNmNlMjRhN2IzMmUiLCJ0ZW5hbnRJZCI6IjAwMDAwMCIsInVzZXJJZCI6MSwidXNlck5hbWUiOiJhZG1pbiIsImRlcHRJZCI6MTAzLCJkZXB0TmFtZSI6IueglOWPkemDqOmXqCIsImRlcHRDYXRlZ29yeSI6IiJ9.sacBfJ8qPOEICfFTpbxgRaQN2A368rZITV6_jwB4_-Y";

    this.defaults.header.Authorization="Bearer " + access_token

    options.url=this.defaults.baseUrl + options.url;

    options={...this.defaults,...options}

    return new Promise((resolve,reject)=>{

      wx.request({

        ...options,

        success:(res)=>{

          switch (res.data.code) {

            case 200:

              return resolve(res.data)

            case 401:

             wx.showModal({

              title: '系统提示',

              content: '登陆过期,请重新登录',

              showCancel:false,

              success (modalres) {

                if (modalres.confirm) {

                  console.log('用户点击确定');

                }

              }

             })

             return Promise.reject(res)

            default:

              wx.showToast({

                title: '系统更新中...',

                duration:3000

              })

              return Promise.reject(res)

        }

          

        },

        fail:(err)=>{

          reject(err)

        }

      })

    })

  }

  get(url,data){

    return this.request({url:url,method:"GET",data:data})

  }

 post(url,data){

    return this.request({url:url,method:"POST",data:data})

  }

 put(url,data){

    return this.request({url:url,method:"PUT",data:data})

  }

 delete(url,data){

    return this.request({url:url,method:"DELETE",data:data})

  }

}

const instance = new WxRequest();

instance.interceptors.request=(config)=>{

  return config;

}

instance.interceptors.response=(response)=>{

  return response;

}

export default instance;

 

3.引用request.js文件并且使用新的快捷方法

import instance from "../../utils/request"

Page({

onLoad: function (options) {

    this.getList();

  },

  async getList(){

    let data = {

        pageSize:"10",

        pageNum:"1",

        isAsc:"desc"

      }

    let res = await instance.get('/desktop/icon/list',data)

    console.log(res)

  },

})

这样是不是更简单了....哈哈哈哈 

http://www.dtcms.com/wzjs/255231.html

相关文章:

  • wordpress做的外贸网站企业宣传软文
  • 在线网站流量查询永久免费的网站服务器有哪些软件
  • 有免费的微网站制作吗黄金网站软件免费
  • wordpress b站视频解析网络推广软件免费
  • 哈尔滨seo优化资讯
  • 德州网站制作公司南京网站制作
  • 行业做门户网站挣钱吗百度seo排名规则
  • 鄂尔多斯网站开发已矣seo排名点击软件
  • 加盟平台网站怎么做云搜索app官网
  • 为什么小城市做不出来好的网站可以搜任何网站的浏览器
  • 做交友网站如何吸引用户注册济南seo网络优化公司
  • 网站建设合理的流程网站关键词挖掘
  • 网页游戏网站bt777游戏折扣平台企业管理培训课程网课
  • 有些公司做网站比较好的广东东莞疫情最新消息今天又封了
  • 潍坊汇聚网站长尾词挖掘免费工具
  • 中建卓越建设管理有限公司网站南昌seo搜索优化
  • 萧山网站优化seo搜索引擎优化到底是什么
  • 免费app开发平台百度seo工作室
  • 大数据与网站开发技术教育培训网页设计
  • 河北提供网站制作公司报价小米的推广软文
  • 扬州工程建设信息网官网西安seo网站建设
  • sql如何建设网站数据库以图搜图
  • 联通公网ip申请 做网站免费放单平台无需垫付
  • 网页设计毕业设计理念搜索引擎优化的技巧
  • 网站开发工资多少河南郑州网站推广优化
  • 淘宝联盟做的好的网站网络营销手段
  • 什么系统网站好快速建站
  • 做爰网站美女图片外贸网站建设案例
  • 做试试彩网站在线域名ip查询
  • 大连网页制作培训学校网站优化排名查询