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

本文介绍了如何在项目中组织文件结构,包括创建common文件夹存放配置和API文件,使用uni.requestApi进行网络请求,并举例说明了userService.js中的用户登录服务。适合于APP和微信小程序开发。
摘要由CSDN通过智能技术生成

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

let BASE_URL = ''

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

const configService = {
    baseUrl: BASE_URL,
};

export default configService

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

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

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

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

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

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

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

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

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

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

export default httpService

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

import { userAPI } from "@/common/apis/userApi.js"
import httpService from "@/common/request.js"

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

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

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

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue通常使用Axios作为Http库来发送HTTP请求。下面是一个通用的Axios封装,可以用于发送get、put、postdelete请求。 首先,我们需要在项目安装Axios依赖。可以使用npm或yarn命令来安装: ``` npm install axios ``` 或者 ``` yarn add axios ``` 然后,我们可以在项目创建一个utils文件夹,并在其创建一个http.js文件。在http.js文件,我们可以编写通用的Axios封装代码: ```javascript import axios from 'axios'; // 创建一个axios实例 const instance = axios.create({ baseURL: 'http://api.example.com' // 设置请求的默认基本URL }); // 请求拦截器,可以在请求发送之前做一些处理,比如添加请求头 instance.interceptors.request.use( config => { // 在请求发送之前添加一个Authorization请求头(如果需要) config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token'); return config; }, error => { return Promise.reject(error); } ); // 响应拦截器,可以在请求返回之后做一些处理,比如处理错误信息 instance.interceptors.response.use( response => { // 在请求成功返回之后处理响应数据 return response; }, error => { // 在请求失败返回之后处理错误信息 return Promise.reject(error.response.data); } ); // 封装get请求 export const get = (url, params) => { return instance.get(url, { params }); }; // 封装put请求 export const put = (url, data) => { return instance.put(url, data); }; // 封装post请求 export const post = (url, data) => { return instance.post(url, data); }; // 封装delete请求 export const del = url => { return instance.delete(url); }; ``` 以上是一个简单的对Axios进行封装的例子。你可以根据自己的项目需求进行相应的修改和扩展。在组件使用get、put、postdelete方法来发送不同类型的请求。示例代码如下: ```javascript import { get, put, post, del } from '@/utils/http'; // 使用get请求 get('/api/users').then(response => { console.log(response.data); }).catch(error => { console.error(error); }); // 使用put请求 put('/api/user/1', { name: 'John', age: 30 }).then(response => { console.log(response.data); }).catch(error => { console.error(error); }); // 使用post请求 post('/api/user', { name: 'John', age: 30 }).then(response => { console.log(response.data); }).catch(error => { console.error(error); }); // 使用delete请求 del('/api/user/1').then(response => { console.log(response.data); }).catch(error => { console.error(error); }); ``` 以上就是一个通用的Axios封装,可以用于发送get、put、postdelete请求。通过这种封装,可以简化和统一项目的HTTP请求处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘bill

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值