UniApp中封装request网络请求包含GET、POST、PUT、DELETE等

时间:2025-04-23 08:58:46

一、在项目根目录创建common文件夹,用于放置、、等等文件,在文件中用于配置api的开发环境及生产环境的host,代码如下:

let BASE_URL = ''

if (.NODE_ENV == 'development') {
    BASE_URL = '  ' // 开发环境hosts
} else {
    BASE_URL = '      ' // 生产环境
}

const configService = {
    baseUrl: BASE_URL,
};

export default configService

二、文件可以用来放置项目中接口请求需要用到的url,方便统一管理,后期更改时更方便修改。代码如下:

export const userAPI = {
    login: '/userAuth/login',
    register: ''
} 

也可以根据实际需求创建如userAPI、productAPI等等的名称的API,用于区分不同功能模块的请求接口

三、就是文件了,通过 Api来实现网络请求。代码如下:

import configService from './'//引入配置文件,用于拼接host
// 封装请求
function request(url, method, data, isForm) {
    return new Promise((resolve, reject) => {
        ({
            url,
            data,
            method,
            header: {
                // 'Accept': '*/*',
                'Content-Type': isForm ? 'application/x-www-form-urlencoded' :
                "application/json", //根据后台接口确定类型JSON application/json或                form:"application/x-www-form-urlencoded";
                "Authorization": `Bearer ${(ACCESS_TOKEN)}`//用户登录成功后将token存在localStorage中,用于后续接口请求认证
            },
            success: (res) => {
                resolve(res)
            },
            fail: (err) => {
                reject(err)   //可以在这里统一处理err,一般可以提示服务器无法连接,检查网络等。
            }
        })
    })
}

function get(url, data = {}, isForm = true) {
    return request( + url, "GET", data, isForm);
}

function post(url, data = {}, isForm = true) {
    return request( + url, "POST", data, isForm);
}

function put(url, data = {}, isForm = true) {
    return request( + url, "PUT", data, isForm);
}

function del(url, data = {}, isForm = true) {//function中delete为关键字,改用del
    return request( + url, "DELETE", data, isForm);
}

const httpService= {
    get: get,
    post: post,
    put: put,
    delete: del
}

export default httpService

四、可以在根目录创建service文件夹,在文件夹内根据需求创建如用于处理用户相关网络请求回来的数据,代码如下:

import { userAPI } from "@/common/apis/"
import httpService from "@/common/"

export function login(userName, pwd) {
    let url = ;
    let params = {
        userName: userName,
        password: pwd
    }
    let promise = (url, params).then((res) => {
        return res;
    }, (error) => {
        return error;   
    });
    return promise;
}

最后,在pages文件中的中调用对应中对应的方法即可。代码如下

<script>
    import {login} from "@/services/"
    export default {
        data() {
            return {
                userName:'',//双向绑定用户输入的用户名、密码
                pwd:''
            }
        },
        methods: {
            async doLogin(){
                let res = await login(,)
                (res)  //处理登录成功,存储token到localStorage,跳转页面。登录失败,提醒用户。
            }
        }
    }
</script>

以上名称可以根据实际需求修改,适用于APP和微信小程序