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

怎样做安居客网站seo系统

怎样做安居客网站,seo系统,龙岩优化怎么做搜索,河南头条最新消息 新闻首先我们先看一下uni官方给开发者提供的uni.request用来网络请求的api 1 2 3 4 5 6 7 8 9 uni.request({ url: , method: GET, data: {}, header: {}, success: res > {}, fail: () > {}, complete: () > {} }); 可以看到我们每次请求数据的时候都需…

首先我们先看一下uni官方给开发者提供的uni.request用来网络请求的api

1

2

3

4

5

6

7

8

9

uni.request({

  url: '',

  method: 'GET',

  data: {},

  header: {},

  success: res => {},

  fail: () => {},

  complete: () => {}

});

可以看到我们每次请求数据的时候都需要按照这个格式来请求,这样会使代码冗余并且难以维护,所以就需要将uni.request进行二次封装

uni.request 三种请求方式

uni.request 请求方式

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

// 默认方式

uni.request({

  url: 'https://www.example.com/request',

  success: (res) => {

    console.log(res.data);

  }

});

// Promise

uni.request({

    url: 'https://www.example.com/request'

  })

  .then(data => {

    //data为一个数组,数组第一项为错误信息,第二项为返回数据        

    var [error, res] = data;

    console.log(res.data);

  }) // Awaitasync 

function request() {

  var [error, res] = await uni.request({

    url: 'https://www.example.com/request'

  });

  console.log(res.data);

}

封装响应拦截器

1. 新建一个request.js文件

1

2

3

4

5

6

7

8

9

10

11

export default {

  config: {

    baseURL: '',

    // 响应拦截器

    beforeRequest() {},

    // 请求拦截器

    handleResponse() {}

  },

  // request 请求

  request() {}

}

2. 在响应拦截器中封装公共方法

我们先在request中调用 beforeRequest

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

// common/request.jsexport

default {

  config: {

    baseURL: baseURL,

    // 响应拦截器

    beforeRequest() {

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

        console.log('响应拦截器') resolve('123456')

      })

    },

    // 请求拦截器

    handleResponse() {}

  },

  // request 请求

  request() {

    return this.config.beforeRequest().then(opt => {

      console.log(opt)

    })

  }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

// pages/index/index.vue

import api from '@/common/request.js'

export default {

  data() {

    return {}

  },

  onLoad() {

    this.getData()

  },

  methods: {

    getData() {

      api.request()

    }

  }

}

在浏览器的控制台中查看打印的内容

可以看到成功打印出来,然后就可以将公共的的方法封装在响应拦截器中

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

// 可以从外部引入baseURL,也可以定义到config下的baseURL中

import baseURL from '@/common/baseURL.js'

export default {

  config: {

    baseURL: baseURL,

    // 处理token的方法

    getToken() {

      let token = uni.getStorageSync('token');

      if (!token) {

        return uni.reLaunch({

          url: '/pages/login/login'

        })

      }

      return token

    },

    // 响应拦截器

    beforeRequest(options = {}) {

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

        options.url = this.baseURL + options.url;

        options.method = options.method || 'GET';

        // options.responseType = 'arraybuffer'

        // 封装自己的请求头

        options.header = {

          token: this.getToken()

        }

        resolve(options)

      })

    },

    // 请求拦截器

    handleResponse() {}

  },

  // request 请求

  request(options = {}) {

    return this.config.beforeRequest(options).then(opt => {

      // 返回 uni.request 

      return uni.request(opt)

    })

  }

}

1

2

3

4

5

6

7

8

9

10

// pages/index/index.vue

methods: {

  getData() {

    api.request({

      url: '/fish/tag/list'

    }).then(data => {

      console.log(data)

    })

  }

}

查看打印结果

封装请求拦截

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

// 可以从外部引入baseURL,也可以定义到config下的baseURL中

import baseURL from '@/common/baseURL.js'

export default {

  config: {

    baseURL: baseURL,

    // 处理token的方法

    getToken() {

      let token = uni.getStorageSync('token');

      if (!token) {

        return uni.reLaunch({

          url: '/pages/login/login'

        })

      }

      return token

    },

    // 响应拦截器

    beforeRequest(options = {}) {

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

        options.url = this.baseURL + options.url;

        options.method = options.method || 'GET';

        // 封装自己的请求头

        options.header = {

          token: this.getToken()

        }

        resolve(options)

      })

    },

    // 请求拦截器

    handleResponse(data) {

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

        const [err, res] = data;

        // 处理错误

        if (res && res.statusCode !== 200) {

          let msg = res.data.msg || '请求错误';

          uni.showToast({

            icon: 'none',

            title: msg

          }) return reject(msg);

        }

        if (err) {

          uni.showToast({

            icon: 'none',

            title: '请求错误'

          }) return reject(err);

        }

        return resolve(res.data)

      })

    }

  },

  // request 请求

  request(options = {}) {

    return this.config.beforeRequest(options).then(opt => {

      // 这里看不懂的可以看上面 uni.request 三种请求方式的第二种

      return uni.request(opt)

    }).then(res => this.config.handleResponse(res))

  }

}

智能机器人

除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址:uniapp封装请求拦截器(封装请求拦截和响应拦截的方法)-老汤博客

http://www.hkea.cn/news/126930/

相关文章:

  • 哪个网站做漫画可以有钱营销型网站设计
  • wordpress在线视频直播湖南正规关键词优化
  • 花木企业网站源码全网推广的方式
  • 网站开发商怎么关闭图片显示站长之家新网址
  • 灯饰如何做网站推广纯手工seo公司
  • 晋中公司做网站seo站长之家
  • 到哪里找人做网站优化seo培训班
  • 深圳网站开发哪家专业搜索到的相关信息
  • 湖北武汉网站制作引擎搜索下载
  • 做网站登录的需求分析seo点击排名工具有用吗
  • 诸暨住房和城乡建设委员会网站怎么制作网站?
  • 昆明cms建站模板视频号排名优化帝搜软件
  • 商务咨询网站源码重庆网站建设哪家好
  • 建设部网站从何时可以查询工程师证深圳全网推广服务
  • 网页制作工具的选择与网站整体风格是有关系的友情链接论坛
  • 免费商会网站模板百度推广账号
  • 玄武模板网站制作品牌关键词排名点击软件网站
  • 网站title的写法微信软文怎么写
  • 设计企业网站流程磁力引擎
  • 橙色企业网站模板域名注册购买
  • 培训建设网站线上推广产品
  • 写作网站不屏蔽全网关键词指数查询
  • wordpress手机uiseo关键词的选择步骤
  • 自己制作网页的步骤windows优化大师在哪里
  • 黑龙江企业信息系统seo推广优化外包公司
  • wordpress+增加域名赣州网站seo
  • 政府门户网站建设思路怎样优化网络
  • 厦门个人网站建设百度账户代运营
  • 企业网站开发注意什么企业网站官网
  • 网站建设开发合同书关键词怎么找出来