weex stream 的使用和封装

993 阅读1分钟

获取stream对象

var stream = weex.requireModule('stream');

get请求

  stream.fetch({
                    method: 'GET',//请求方式
                   //参数直接拼接到地址后面
                    url: '请求地址',
                    //默认json一般使用json,遇到过使用json,请求成功收不到返回参数,这时就要换成text
                    type:'json',
                    //请求头
                    headers: {
                        uid: 'adadasdasd'
                    }
                }, function(response) {
                    console.log("请求结果:" JSON.stringify(response));
                });

pos请求

  stream.fetch({
                    method: 'POST',//请求方式
                   //参数直接拼接到地址后面
                    url: '请求地址',
                    //默认json一般使用json,遇到过使用json,请求成功收不到返回参数,这时就要换成text
                    type:'json',
                    //请求头
                    headers: {
                        uid: 'adadasdasd'
                    }
                    //入参必须是一个字符串对象,不接受JSON对象,也不接受JSON.stringify()后的JSON对象。该字符串对象的格式与get的参数格式相同
                    body:{username:'1'}
                }, function(response) {
                    console.log("请求结果:" JSON.stringify(response));
                });

新建一个api.js文件复制下面代码

/* 引入 请求数据模块 */
const stream = weex.requireModule('stream');

/* 配置API接口地址 */
const baseUrl = 'http://192.168.1.107:8080/';

/* 序列化请求方法 */
let toParams=(obj)=>{
    let param = ""
    if(!obj){
        return param;
    }
    for(let name in obj) {
        if(typeof obj[name] != 'function') {
            param += "&" + name + "=" + encodeURI(obj[name])
        }
    }
    return param.substring(1);
}
/* 请求处理函数 */
let ajax=(params={},callFn)=>{
    let ajaxData={
        method:params.method || 'GET',
        type:params.type || 'json',
    }

    if(/http:|https:/.test(params.url)){
        ajaxData.url=params.url;
    }else{
        ajaxData.url=baseUrl+params.url;
    }
    if(ajaxData.method=='GET'){
        ajaxData.url+=('?'+toParams(params.data));
    }else if(ajaxData.method=='POST'){
        ajaxData.body=toParams(params.data)
    }
    ajaxData.timeout=30000,

    stream.fetch(ajaxData, (res)=> {
        callFn && callFn(res);
    })
}

/* 暴露对象 */
export default {
    baseUrl,
    ajax
}

使用引入api.js文件

 //引用请求接口
 import ApiJs from '../api'
  ApiJs.ajax({
                    url: '',
                    method: 'GET',
                    type: 'text',	//默认 json,默认可以省略
                    //入参
                    data: data,
                }, (res) => {
                    if(res.ok) {
                    //请求成功 
                    }
                })
            },