vue3.0加MongoDB加node的后台管理系统(二)

本文介绍了如何在Vue3.0项目中封装接口,并结合MongoDB和Node.js创建后台管理系统。首先在/src/webapi/api.js中封装请求,接着在login模块封装注册请求。通过/src/webapi/index.js引入并全局挂载。在main.js中进行全局配置。然后逐步创建登录页面,包括背景设置、登录框和验证码组件的实现。
摘要由CSDN通过智能技术生成

接口定义完成,接下来我们进行页面的定义和封装接口

在 /src/webapi/api.js中封装请求

import axios from 'axios'
// 引入axios
import router from '../router/router'
// 引入路由
import {
    message } from 'ant-design-vue'
// 引入提示
const webapi = axios.create({
   
// 判断当前的环境使用不同的地址
    baseURL: process.env.NODE_ENV === 'development' ? http://localhost:8000/api: http://xxx:8000/api
    headers: {
   
        'Content-Type': 'application/json'
    }
})
// 跳转页面
const toLogin = () => {
   
    router.push({
   
        path: '/login'
    });
}

const errorHandle = (status, error) => {
   
    console.log(status)
    // 状态码判断
    switch (status) {
   
        //未登录状态
        case 401:
            toLogin()
            break
        case 403:
            // 403 token过期
            // 清除token并跳转登录页
            message.error("403: 登录过期,请重新登录")
            localStorage.removeItem("fuckToken")
            setTimeout(() => {
   
                toLogin()
            }, 1000)
            break
        case 404:
            message.error("404: 请求资源未找到!")
            router.push({
   
                path: '/404'
            })
            break
        case 500:
            message.warning("500: 服务器加载失败!")
            router.push({
   
                path: '/500'
            })
            break
        default:
            message.warning(`其他错误信息: ${
     error}`)
    }
}

// 添加请求拦截器
// 在请求发送之前做一些事
webapi.interceptors.request.use(
    config => {
   
    // 将token添加到请求头上
        if (localStorage.getItem('fuckToken')) {
   
            config.headers['x-access-token'] = localStorage.getItem('fuckToken')
        }
        // 添加时间戳,防止缓存
        config.url = `${
     config.url}?time=${
     Date.parse(new Date())}`
        return config
    },
    error => {
   
        return Promise.reject(error)
    }
)
// 响应拦截器 —— 处理响应对象
webapi.interceptors.response.use(
    response => {
   
        // 传递message参数可以显示默认失败提示
        if (response.data.msg && response.data.code !== 1000) {
   
            errorHandle(response.data.code, response.data.error)
            // // 抛出异常,终止执行
            throw Error('已处理:res.data.code不为1000')
        }
        return response
    },
    error => {
   
        const {
    response } = error
        if (response) {
   
            // 相应错误处理: token 过期, 无权限访问, 路径不存在, 服务器问题等
            errorHandle(response.status, response.data.error)
            return Promise.reject(response)
        } else {
   
            return Promise.reject(error)
        }
    }
)
// 封装的请求
export function get (url, params) {
   
    return new Promise((resolve, reject) => {
   
        webapi.get(url, params)
            .then(response => {
   
                resolve(response.data)
            })
            .catch(err => {
   
                reject(err)
            })
    })
}
export function post (url, data = {
   }) {
   
    return new Promise((resolve, reject) => {
   
        webapi.post(url, data)
            .then(response => {
   
                resolve(response.data)
            })
            .catch(err => {
   
                reject(err)
            })
    })
}
export function put (url, data) {
   
    return new Promise(
【资源介绍】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 一 mongodb使用 1)命令函: (mongo:代表进入mongo环境) (show dbs :显示数据库) (db当前) (use goods :切换到goods) 2)Token令牌 : 就是一个密的字符串 密算法在。 权限管理 当第一次登陆以后生成一个令牌 (这个令牌是密的) 设置有效期 用户第一次使用用户名登陆成功后,后端生成病返回给前端保存 令牌是有有限期的 亦可以伪造 所以要校验 nodejs 有密和解-解密 步骤一:项目准备工作 1 vue create myprojct 创建项目 (myprojct 项目名字) 2 淘宝镜像源npm install -g cnpm(使用下载更快) 1)myproject安装 项目所需的各种依赖 1 npm install vue-resource --save -dev 2 npm install axios --save 3 npm install element-ui -S 4 npm install vuex --save 5 npm install animate.css --save 6 npm install -g babel 7 npm i core-js 2)mongodb安装 上传头像 mongo 先下载Npm i mullter 1mongodb文件夹:在mongodb index文件的作用引用 注意点当每次编写接口都需要在index.js 引入路由文件 以及router.use(文件路径,文件名) 3)引入公共css在public (reset文件夹名字)第要使用在public里面的index.html 引入css <link rel="stylesheet" href="css/reset.css"> <link href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"> 这一个是引入boootcss这个css 4)router.js 路由 1 定义(路由)组件 2 定义路由 3 创建 router 实例, 4 然后传 `routes` 配置 创建和挂载根实例。导出路由然后在min.js引入 在这个项目里面使用了嵌套路由注意和 LeftMenu.vue 关系 children 里面是路由嵌套 leftmenu后面细说 5)配置min.js store在后台管理系统里面是没有使用的 ``` 6)图片assets 7)在views创建 Register.vue Login.vue 404.vue项目 index.vue 1 注册页面 接口是user.js 登录页面 有有联系页面是myproject 的 http.js 和login.vue Authorization就是token当code===1时候 let targetUrl = this.$route.query.targetUrl || './Index' 代码解释:声明一个目标路由如果有目标地址就跳转到目标地址 没有就跳转到首页面Index.vue 保存token 2创建htttp.js 引入 loading和引入axios 使用loading和请求拦截和相应拦截环节和使用loading 当 请求数据code==1 就跳转到index.vue token校验 跳转到index.vue 后components里面再创建leftMenu.vue 和HeadNav.vue 具体看leftMenu以里面的嵌套路由 这两个文件夹引入到views的 Index.vue里面 使用import .. from ..引入切注册组件 HeadNav.vue :取出token校验 解码(没写此步骤)当点击退出删除token leftMenu.vue 里面有嵌套路由 足以逻辑的使用 children增子路由步骤 1在 leftMenu.vue 下面cheildren 的 ·{ path: "FoundEdit", name: "编辑商品" }, 2找到router.js
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值