uni-app项目封装http请求和不封装请求

这篇具有很好参考价值的文章主要介绍了uni-app项目封装http请求和不封装请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、封装方法1(_gt和_mt类型)

1.在根路径下新建config基路径文件夹,新建index.js文件用于封装基路径

//在config/index.js
// 请求的基本路径
const baseURL = process.env.NODE_ENV === "development" ?
"http://192.168.1.188:8080"://测试环境(请求接口的代理路径)
"http://zxwyit.cn:8080";//上线环境

export {baseURL}

2.在根路径下新建uilt文件夹,新建http.js文件用于封装请求

// 引入基路径
import {
    baseURL
} from "@/config/index.js"

const http = uni.$u.http

// 初始化请求配置
http.setConfig((config) => {
    /* config 为默认全局配置*/
    config.baseURL = baseURL /* 根域名 */
    config.header = {//设置请求头类型,这里是form类型,要看接口文档才能确定是什么类型
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }
    return config
})

// 请求拦截
http.interceptors.request.use((config) => { // 可使用async await 做异步操作
    let strUser = uni.getStorageSync("user")//"user"是登入成功后存储的用户信息,存储为了字符串
    let objUser = strUser ? JSON.parse(strUser) : {}//判断存不存在user,转为对象形式,否则{},{}是为了防止空指针
    config.header.accessToken = objUser.accessToken;//获取token值
    return config
}, config => { // 可使用async await 做异步操作
    return Promise.reject(config)

})


// 响应拦截
http.interceptors.response.use((response) => {
    /* 对响应成功做点什么 可使用async await 做异步操作*/
    let data = response.data//这里做浅解,可以做也可以不做,做了以后请求数据后赋值就少写一个data
    const {
        errmsg,
        errno
    } = data;
    if (200 !== errno) {
        return Promise.reject(data); //返回错误,通过catch来处理错误
    }
    return data
}, (response) => {
    // 对响应错误做点什么 (statusCode !== 200)
    return Promise.reject(response)
})
//封装post请求
function post(_gp, _mt, data = {}, params = {}) {
    return http.post("/m.api", {
        _gp,
        _mt,
        ...data
    },{
        ...params
    })
}
//封装get请求
 function get(_gp, _mt, params={}) {
    return http.post("/m.api", {
        _gp,
        _mt,
        ...params
    })
}
//暴露封装的函数
export {post,get}
  1. 使用

在页面文件中

import {post,get} from "@/uilt/http.js"//引入封装的请求方式
//第一个参数是_gt,第二个参数是_mt,第三个参数是需要传递的数据
login(){
    let data ={
        phone:this.phone
        password:this.password
    }
    post("user", "login", data).then(res => {
        console.log(res, "登入成功");
        uni.showToast({
            icon: "success",
            title: res.data.errmsg,
            duration: 1000
        })
        setTimeout(function() {
            uni.switchTab({
                url: '/pages/index/index'
            });
        }, 1000);
    }).catch(err => {
        uni.showToast({
            icon: "error",
            title: err.errmsg,
            duration: 1000
        })
    })
}

4.说明

该请求的封装方式适用于_gt、_mt类型的请求,应该也可以做到其他类型;

注意看代码中的注释

二、封装方法2(常见类型)

  1. 在根路径下新建uilt文件夹,新建api.js用于封装请求的路径和新建http.js用于封装请求

在uilt/api.js中


const url = "http://localhost:8086/"//设置基路径(代理路径)
// 登入页面相关的所有接口
//登入
export const loginpath = url + "login"
// 退出登入
export const logoutpath = url + "logOut"
// 注册
export const registerpath = url + "user/register"

在uilt/http.js中

// 封装请求
function request(url,method = "get",data = {}) {
    return new Promise((resolve, reject) => {
        uni.request({
            url,
            data,
            method,
            header: {
                // 'Accept': '*/*',
                // 'Content-Type': 'application/json',//类型
                "Authorization": uni.getStorageSync('token')//请求头
            },
            success: (res) => {
                resolve(res)
            },
            fail: (err) => {
                reject(err)
            }
        })
    })
}

export {
    request
}

2.使用

在页面文件中

<script>
import {request} from '../../utils/http.js'//引入封装请求
import {loginpath,registerpath,orderpath} from '../../utils/api.js'//引入请求路径

export default {
        data() {
            return {
                userName: "admin",
                passWord: "123456",
                bool: true
            }
        },
        onShow() {
            // this.init()
        },
        methods: {
            //登入点击事件
            userPath() {
                const userName = this.userName
                const passWord = encrypt(this.passWord) //加密处理
                //第一个参数是请求的路径,第二参数是请求方式,第三个参数是需要传递的数据
                request(loginpath, "post", {
                    userName,
                    passWord
                }).then(res => {
                    if (200 == res.statusCode) {
                        uni.setStorageSync('token', res.data.accessToken)
                        uni.switchTab({
                            url: '/pages/user/user'
                        })
                    } else {
                        uni.showToast({
                            title: res.data,
                            duration: 500
                        })
                    }
                })
            }
        }
    }
</script>

三、不封装请求

说明

注意看代码中的注释;不封装需要使用 uni.request这个API来进行请求文章来源地址https://www.toymoban.com/news/detail-635508.html

// 注册
registerUser(){
    let data = {
        phone:this.form.phone,
        password:this.form.password,
        verifyCode:this.verifyCode
    }
    if(data.password==''||data.verifyCode==''||data.phone==''){
        uni.showToast({
            icon: "error",
            title: "验证码/手机号/密码不能为空",
            duration: 1000
        })
        return
    }
    uni.request({
        url: 'http://192.168.1.188:8080/m.api',//请求路径
        data: {//传递的数据
            _gp: "user",
            _mt: 'register',
            ...data
        },
        method: "POST",//请求方式
        header: {//请求头配置
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',//设置请求类型,到接口文档中找
            "AccessToken":uni.getStorageInfoSync("token")//根据需求是否需要添加token
        },
        success: (res) => {//请求成功后的回调
            let data = res.data
            console.log(res, "注册成功");
            if (200 === data.errno) {
                this.verifyCode = data.data
            }else{
                uni.showToast({
                    icon: "error",
                    title: data.errmsg,
                    duration: 1000
                })
            }
        },
        fail: (err) => {//请求失败后的回调
            uni.showToast({
                icon: "error",
                title: err,
                duration: 1000
            })
        }
    })
}

到了这里,关于uni-app项目封装http请求和不封装请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app封装request请求及get、post、put等方法

    直接上代码 request.js文件 export default {   common: {     baseUrl: \\\"http://172.20.4.212:3000/api\\\",     data: {},     header: {       \\\"Content-Type\\\": \\\"application/json\\\",       \\\"Content-Type\\\": \\\"application/x-www-form-urlencoded\\\"     },     method: \\\"GET\\\",     dataType: \\\"json\\\"   },   request (options = {}) {     uni.showLoading({  

    2024年02月09日
    浏览(43)
  • 详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第五节 (基于uni-app封装鸿蒙接口请求库)

      随着鸿蒙系统的兴起,越来越多的app会采用鸿蒙开发。而鸿蒙开发必不可少的就是调用各种接口服务。为了简化接口的调用流程,我们通常会做一层封装。今天就来讲解一下,如何用uni-app封装鸿蒙的接口请求库。   首先我们要新建一个鸿蒙项目啦!当然选择第一个空白项

    2024年02月02日
    浏览(60)
  • 【UniApp】-uni-app-项目实战页面布局(苹果计算器)

    经过前面的文章介绍,基本上 UniApp 的内容就介绍完毕了 那么从本文开始,我们就开始进行一个项目的实战 这次做的项目是苹果计算器,这个项目的难度不是很大,但是也不是很简单,适合练手 打开 HBuilderX,点击左上角 文件 - 新建 - 项目 : 项目创建完毕之后,首先来分析

    2024年02月04日
    浏览(65)
  • 【uni-app】【Android studio】手把手教你运行uniapp项目到Android App

    选择运行到Android App基座 选择运行项目 1、连接手机,在手机上选择 传输文件。 2、打开 设置 - 关于本机 - 版本信息 -连续点击4-5次 版本号 ,输入手机密码,系统就进入了开发者模式。 3、 设置 其他设置 开发者选项 打开 开发者选项 打开 USB调试 。 4、回到Hbuilder,点击刷新

    2024年02月09日
    浏览(51)
  • miniprogram-to-uniapp使用指南(各种小程序项目转换为uni-app项目)

    小程序分类:uni-app qq小程序 支付宝小程序 百度小程序 钉钉小程序 微信小程序 小程序转成uni_app 小程序转为uni_app 小程序转uni_app 小程序转换 工具现在支持npm全局库、HBuilderX插件两种方式使用,任君选择,HBuilderX插件地址:https://ext.dcloud.net.cn/plugin?id=2656 【miniprogram-to-uniapp】

    2024年02月08日
    浏览(57)
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~ uniapp官网提供了  HBuild

    2024年02月09日
    浏览(80)
  • uni-app 使用axios发请求 运行到微信开发者工具报错 Adapter “http‘ is not available in the build

    场景 最近在使用uni-app开发H5移动端,跟往常一样使用axios发请求,做一些全局的请求拦截响应拦截操作 uni-app数据存储,uni-ui组件开发,配置axios,vuex。配置了vue.config.js文件做跨域操作 运行到谷歌浏览器一切正常,但是运行到微信开发者工具就开始报错,Adapter-适配器不可用

    2024年02月08日
    浏览(55)
  • uni-app组件封装基本知识

            小写字母,单词用“ - ”链接例如(bj-item ) , 目录名称和文件名保持一致,官方默认把“ uni- ”开头的 组件全局挂载,不是这种格式的组件需要局部挂载。 1 、“ uni- ”开头的组件官方默认全局挂载  2、组件使用 随着Hbuilder的升级,现在组件统一放到uni_module

    2023年04月08日
    浏览(44)
  • uni-app/vue封装车牌选择器

    先看下效果如下: 代码如下: 父组件: 子组件:(代码较长,css部分没有提供)

    2024年01月18日
    浏览(53)
  • (小程序)基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    版本信息: 点击编辑器的文件 新建 项目(快捷键Ctrl+N) 2.选择uni-app项目,输入项目名/路径,选择项目模板,勾选vue3版本,点击创建,即可成功创建。 3.点击编辑器的运行 运行到浏览器 选择浏览器 当然也可以运行到手机或模拟器、运行到小程序工具。 到这里一个简单的

    2024年02月16日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包