uniapp封装一个网络请求的服务,包括拦截器,请求头等,适用于抖音小程序,各种小程序。

今天用uniapp写抖音小程序的时候,发现抖音小程序不支持axios(也许是我不会玩哈),那使用uniapp提供的请求方式总是可以的,毕竟uniapp对于小程序的友好度那是真没的说呀。那每个请求都写一套请求代码也太麻烦了,封装一个服务吧。直接上代码,我们把下面这个文件叫做http.js吧,里面的注释也很明白,伸手就能ctrl c v:

const BASE_URL = 'https://用你自己的url替换'; // 设置基本请求 URL

const requestInterceptor = (config) => {
    // 添加请求拦截逻辑
    // 在这里可以对请求进行处理,例如添加请求头、签名等
    config.header = {
        ...config.header
    };
    return config;
};

const responseInterceptor = (response) => {
    // 添加响应拦截逻辑
    // 在这里可以对响应进行处理,例如处理错误码、数据解析等
    if (response.statusCode === 200) {
        return response.data;
    } else {
        throw new Error('Request failed with status code ' + response.statusCode);
    }
};


const request = (config) => {
    const requestConfig = {
        ...config,
        header: requestInterceptor(config).header,
        url: BASE_URL + config.url,
    };

    return new Promise((resolve, reject) => {
        uni.request({
            ...requestConfig,
            success: (res) => {
                try {
                    const responseData = responseInterceptor(res);
                    resolve(responseData);
                } catch (error) {
                    reject(error);
                }
            },
            fail: (err) => {
                reject(err);
            },
        });
    });
};

export const get = (url, params = {}) => {
    const config = {
        url,
        method: 'GET',
        data: params,
    };

    return request(config);
};

export const post = (url, data = {}) => {
    const config = {
        url,
        method: 'POST',
        data,
    };

    return request(config);
};

cv以后就能直接用:

import { get, post } from '@/http.js';

// 发送 GET 请求
get('/users', { id: 1 })
  .then((response) => {
    // 处理成功的响应
  })
  .catch((error) => {
    // 处理请求错误
  });

// 发送 POST 请求
post('/users', { name: 'John', age: 25 })
  .then((response) => {
    // 处理成功的响应
  })
  .catch((error) => {
    // 处理请求错误
  });

当然如果用vue的话,你可以将get和post这两个方法在main.js挂载到Vue实例原型上以供全局使用,就不用到处import了。

抖音小程序文档中的tt对象都可以用uni对象来替换,用tt对象调用的方法都可以用uni调用

题外话:小程序开发的资料比较少,多说一句小程序的内容,抖音小程序其实和微信小程序差不多,微信小程序毕竟是各大小程序的鼻祖,大同小异,所以也是推荐大家直接用uniapp开发,虽然uniapp性能上不如原生安卓ios或者flutter应用,但是论跨平台和开发效率,还是支持vue的uniapp要强很多,开发一套代码可以同时打包各个小程序、安卓、h5、ios(需要使用mac os打包)等,在这个方面,他的效率很高的,至于有人骂uniapp全是恶心人的广告啥的,我觉得这很正常,至少从一个方面也是反应了开发者也是生活不易,已然开源,也还得靠广告费挣点钱,这个是完全可以理解甚至是可以支持一把的,很多市场插件也都是看一个广告就能免费用了,挺好的,好的产品愿意支持。

如果小程序的需求比较多,我后面会出一些uni小程序的入门教程。

猜你喜欢

转载自blog.csdn.net/Spy003/article/details/130979354