apiurl

自动适配测试环境API地址

Usage no npm install needed!

<script type="module">
  import apiurl from 'https://cdn.skypack.dev/apiurl';
</script>

README

#转换URL地址,用于统一指向测试环境

 stepA 
    $ cnpm/npm install apiurl 
    后将自动引入 axios
 stepB 
    直接调用apiurl()方法
    apiurl,并在构造函数中传入对应参数
        可以直接使用 toString() 返回修改后的URL地址
        该方法提供3个参数
    * 转换当前地址
    * 传入参数为一个对象,其中必需包含的参数有:
    *  @param {string} url 当前需要请求的地址
    * 可选参数:
    *  @param {string} mark 需要标记的前缀,如果不设置,默认: test_
    *  @param {string} envName 当前环境变量的变量名称,不填默认: JMG_ENV

例如:
    let apiurl = require("apiurl")
    let result = await apiurl.post("localhost:8081/h", {mint:1});
    let result = await apiurl.get("192.168.9.169/h", {mint:1});

    当前地址如果为HTTPS的话,如果在接口前缀不加任何协议,则会原样使用当前浏览器地址的协议
    apiurl("www.baidu.com") => http://test_www.baidu.com (默认使用:http://)
    apiurl("xxx.xxx.xxx.xxx") => 无论在生产或开发环境,都会原样返回
    apiurl("www.baidu.com","testingenvironment_","JMG_ENV") https://testingenvironment_www.baidu.com



Promise API 方式:

    let p = () => {
        return apiurl.post("localhost:8081/h", data);
    }
    let g = () => {
        return apiurl.get("192.168.9.169:8081/h", data);
    }
    let value = await apiurl.axios.all([p(), g()]);
    console.log(value)

CallBack 方式:
    apiurl.axios.all([p(), g()]).then(apiurl.axios.spread((postResult, getResult) => {
        console.log(postResult.data, getResult.data)
    })).catch(err => {
        
    })

实列化方式:

    let apiurl = require("apiurl")
    let api = new apiurl("www.baidu.com")
    api.toString() => http://test_www.baidu.com (默认使用:http://)
    let api= new apiurl("www.baidu.com","testingenvironment_")
    api.toString() =>  https://testingenvironment_www.baidu.com
    当在生产环境中(express,vue-cli) 中打包后,会自动去除前缀
    
    发起Ajax请求
    api.post/get/put/delete 等
    api.post(url,data)


#0.1 调用示列:

    let s = new apiurl("localhost:8081/h");
    let data = {
        mint: 1
    }
    s.axios.all([s.post(data), s.get(data)]).then(s.axios.spread((postResult, getResult) => {
        let post = postResult.data
        let get = getResult.data;
    }))


也可同时发起多个并发请求
#0.1.1 调用示列

s.axios.all([g(data), p(data)])
    .then(s.axios.spread((acct, perms) => {)
        // Object {get: "1"}
        // Object {post: 2}
    })).catch(err => {
        //如果其中一个失败,则全部请求失败
        // Request failed with status code 500
        console.log(err)
});

支持 Promise API
#0.2 示列如下:

try {
    let datavArray = await s.axios.all([g(data), p(data)]);
        //datavArray.length 为传入的请求的个数,此时为2
    console.log(datavArray)
        //datavArray[0].data => get(data) 的值
        //datavArray[1].data => post(data) 的值
} catch (error) {
        //如果其中一个失败,则全部请求失败
        // Request failed with status code 500
    console.log(error);

}

HTML静态页调用说明
    HTML中引入JS文件 apiurl.js
    * 调用debug 方法模板当前静态页面的环境变量 例如:debug(false); 为生产环境debug(true); 为测试环境
    * 目前暂不支持同时发起多个并发请求
调用示例:
    <script src="../javascripts/apiurl.js"></script>
    let testurl= apiurl("localhost:8081/h")=> test_localhost:8081/h
    let g = await apiurl.get("192.168.9.169:8081/h", {
            mint: 1
    });
    let p = await apiurl.get("192.168.9.169:8081/h", {
        mint: 1
    });

    let url = apiurl("www.baidu.com"); 
    apiurl.get/post 可直接发送请求,调用方法与 #0.1 相同

    
支持 Promise API
#0.3 示列如下:

    try {
        let g = await apiurl.get(url,{mint:1});
        let p = await apiurl.post(url,{mint:1});
    } catch (error) {

        
    }

同样支持new实列化方式调用
    let api = new apiurl("192.168.9.169:8081", "tt_");
    try {
        let s = await api.get("/h", {
            mint: 1
        })
        console.log(api.toString());
        let p = await api.post("/h", {
            data: 1
        });
        console.log(s.data, p.data)
    } catch (error) {

    }

let g = await api.get(router,obj);
let p = await api.post(router,obj);