美文网首页优尼AppVue
uniapp网络请求封装(Promise)

uniapp网络请求封装(Promise)

作者: Feng_Du | 来源:发表于2020-07-06 16:12 被阅读0次

    一、uniapp初始请求使用方式如下:

    uni.request({
        url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
        data: {
            text: 'uni.request'
        },
        header: {
            'custom-header': 'hello' //自定义请求头信息
        },
        success: (res) => {
            console.log(res.data);
         },
        fail:(err) => {
         console.log(err);
      }
    });
    
    

    二、我们先通过Promise进行一次简单封装,新建request.js文件:

    //options参数我们后面会说
    function service(options = {}) {
    return new Promise((resolved, rejected) => {
    uni.request({
       url: options.url, //仅为示例,并非真实接口地址。
       data: options.data,
       header: {
           'content-type': 'application/x-www-form-urlencoded',
           'accessToken': `${token}` //权限token 
       },
       success: (res) => {
          resolved(res.data);
       },
       fail:(err) => {
       rejected(err)
     }
    });
    }
    }
    export default service;
    

    三、最后我们在上一步基础上再一次优化。

    //把配置项单独处理
    
    import store from '/store/index.js'; //vuex  
    let server_url=' ';//请求地址
    let token = ' ';  凭证
    process.env.NODE_ENV === 'development' ? '192.168.0.1' : 'http://***/api' ; //环境配置
    function service(options = {}) {
           store.state.token && (token = store.state.token); //从vuex中获取登录凭证
           options.url = `${server_url}${options.url}`;
              //配置请求头
            options.header = {
            'content-type': 'application/x-www-form-urlencoded',
            'accessToken': `${token}` //Bearer 
        };
    
        return new Promise((resolved, rejected) => {
                    //成功
            options.success = (res) => {
                  
                if (Number(res.data.code) == 0) {  //请求成功
                    resolved(res.data.data);
                } else {
                    uni.showToast({
                        icon: 'none',   
                        duration: 3000,
                        title: `${res.data.msg}`
                    });
                    rejected(res.data.msg);//错误
                }
    
            }
                  //错误
            options.fail = (err) => {
                rejected(err); //错误
            }
            uni.request(options);
    
        });
    }
    export default service;
    

    四、现在我们在页面中使用。

    1、新建pages页面。

    目录如下
    ┌─common
    │ ├─request.js //请求
    ┌─pages
    │ ├─index
    │ │ └─api.js //api列表
    │ │ └─index.vue //页面文件
    ├─static
    ├─store
    │ ├─index.js //vuex
    ├─main.js
    ├─App.vue
    ├─manifest.json
    └─pages.json

    2、配置api列表。api.js //api列表

    import request from '/common/request.js'
    export function login(data) {
      return request({
        url: '/user/login',
        method: 'POST',
        data
      })
    }
    

    3、页面中使用

    import { login} from './api.js';  //引入需要的api
    //发起请求
    onLoad() {
    login('parameter').then(data => {
       console.log(data);
    });
    }...
    

    ps:uniapp插件市场下载链接https://ext.dcloud.net.cn/plugin?id=2355

    一个简单的请求封装思路,希望对学习的小伙伴有帮助。谢点赞~~转请注明链接

    相关文章

      网友评论

        本文标题:uniapp网络请求封装(Promise)

        本文链接:https://www.haomeiwen.com/subject/ukowqktx.html