vue-element-admin实战 | 第一篇: 移除mock接入微服务接口,搭建SpringCloud+Vue前后端分离管理平台

简介: vue-element-admin实战 | 第一篇: 移除mock接入微服务接口,搭建SpringCloud+Vue前后端分离管理平台

一. 前言

本篇基于有来商城youlai-mall 微服务项目搭建的后台前端管理平台,技术选型Vue+element-ui实现前后端分离,解决方案选型vue-element-admin。希望通过本篇你可以改造vue-element-admin工程接入微服务接口实现前后端分离。


二. vue-element-admin下载启动

1. 下载

下载 vue-element-admin的i18n分支支持中文,下载地址https://github.com/PanJiaChen/vue-element-admin/tree/i18n


2. 启动

导入vue-element-admin至IDEA,执行npm install,如果安装慢或网络差的情况下请参考安装cnpm设置npm淘宝镜像源这篇文章安装cnpm,然后执行cnpm install安装依赖包。


依赖包安装完成之后,执行npm run dev本地启动项目,默认自动打开浏览器或者在浏览器打开地址栏输入http://localhost:9527


微信图片_20230709213054.png

三. vue-element-admin后台接入

vue-element-admin项目默认走的是本地mock接口数据,那怎么接入到自己平台的后台接口呢?


1. mock接口信息

先看下vue-element-admin登录进入平台所需要的接口信息,如下图所示,是有两个关键接口

微信图片_20230709213058.png


接口一:/user/login 登录认证获取token


{

"code": 20000,

"data": {

 "token": "admin-token"

}

}


接口二:/user/info?token=admin-token 根据token获取用户信息


{

"code": 20000,

"data": {

 "roles": ["admin"],

 "introduction": "I am a super administrator",

 "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",

 "name": "Super Admin"

}

}


2. 后台接口信息

关于后台接口首先对youlai-mall开源项目有些了解,这里因为篇幅不做过多的介绍,详情请拉取下项目,依次启动nacos-server,youlai-admin,youlai-auth,youlai-gateway,项目启动有啥问题请下方留言,见到第一时间会回复。


接口一: 登录认证获取token


youlai-mall整合SpringCloud Gateway+Spring Security OAuth2+JWT技术实现的登录认证接口,调用信息如下:


http://localhost:9999/youlai-auth/oauth/token


微信图片_20230709213121.png


接口二: 获取用户信息


http://localhost:9999/youlai-admin/users/current


微信图片_20230709213125.png


以上就是按照mock数据制作的后台接口。


3. 移除mock

1. vue.config.js


微信图片_20230709213145.png


http://localhost:9999为后台地址


为什么添加配置devServer.proxy进行代理转发?


因为前后端分离,就算是本地开发,也会因为端口不同而满足 跨域请求条件的。


一般跨域是浏览器禁止的,服务器端之间并不禁止跨域(可以配置禁止)。


配置好代理之后,在项目启动时本地会启动一个node服务,浏览器先将请求发送到本地node服务,然后经由node服务将请求代理转发到后台,这样就可以避开浏览器跨域的问题。


具体原理详情可参照:node中跨域代理 proxyTable的原理是什么?


2. src/main.js

微信图片_20230709213158.png


4. 替换mock为后台接口请求

1. src/api/user.js


接口URL替换: 修改登录认证和获取用户信息两个接口的后台请求路径,替换后如下图:


微信图片_20230709213219.png


2. src/store/modules/user.js


认证接口参数: 首先看下登录入口: src/views/login/index.vue的handleLogin方法

微信图片_20230709213221.png


this.$store.dispatch是Vuex状态管理中调用方式,具体操作是分发actions->调用mutations->改变state,其中action包含了异步操做,这是action与mutation的区别,也是dispatch和commit的区别。


// dispatch 异步操作

this.$store.dispatch('actions的方法',args)

// commit 同步操作

this.$store.commit('mutations的方法',args)

明白this.$store.dispatch是做actions的分发,分发路径是/user/login,找到user模块文件src/store/modules/user.js,在文件中actions找到login方法,详情如下图:


微信图片_20230709213245.png


OAuth2认证认证接口还需补上3个参数:


参数值 参数名 参数描述

grant_type password OAuth2授权方式:密码式

client_id client 客户端ID

client_secret 123456 客户端密钥

补全参数后如下:

微信图片_20230709213259.png


3.src/utils/request.js


修改数据上传默认为JSON格式


axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

1

微信图片_20230709213315.png

修改请求头

微信图片_20230709213318.png

修改成功响应状态码

微信图片_20230709213321.png


5. 接入后台登录测试

微信图片_20230709213349.png

微信图片_20230709213402.png



到这里就完成了vue-element-admin移除mock接入到后台的功能


四. 搭建管理前端

通过上面步骤,我们已成功改造vue-element-admin接入到后台接口,接下来我们以管理平台的用户管理功能为例讲述如何使用vue-element-admin搭建我们自己的管理平台。


1. 删除多余文件


删除mock文件夹


删除views下除了dashboard、error-page、login、profile、redirect之外的文件夹


2. 引入用户管理


新增user.js接口、user/index.vue用户页面,完整代码文章结尾获取,结构如下图所示:

微信图片_20230709214503.png



3. 路由配置


修改路由配置文件 src/router/index.js,其中有静态路由constantRoutes和权限路由asyncRoutes需要修改。


静态路由删减保留如下:


export const constantRoutes = [

 {

   path: '/redirect',

   component: Layout,

   hidden: true,

   children: [

     {

       path: '/redirect/:path(.*)',

       component: () => import('@/views/redirect/index')

     }

   ]

 },

 {

   path: '/login',

   component: () => import('@/views/login/index'),

   hidden: true

 },

 {

   path: '/auth-redirect',

   component: () => import('@/views/login/auth-redirect'),

   hidden: true

 },

 {

   path: '/404',

   component: () => import('@/views/error-page/404'),

   hidden: true

 },

 {

   path: '/401',

   component: () => import('@/views/error-page/401'),

   hidden: true

 },

 {

   path: '/',

   component: Layout,

   redirect: '/dashboard',

   children: [

     {

       path: 'dashboard',

       component: () => import('@/views/dashboard/index'),

       name: 'Dashboard',

       meta: { title: 'Dashboard', icon: 'dashboard', affix: true }

     }

   ]

 },

 {

   path: '/profile',

   component: Layout,

   redirect: '/profile/index',

   hidden: true,

   children: [

     {

       path: 'index',

       component: () => import('@/views/profile/index'),

       name: 'Profile',

       meta: { title: 'Profile', icon: 'user', noCache: true }

     }

   ]

 }

]

权限路由删减,并新增用户管理路由如下:


export const asyncRoutes = [

 {

   path: '/admin',

   component: Layout,

   redirect: '/admin/user',

   alwaysShow: true, // will always show the root menu

   name: 'Admin',

   meta: {

     title: '系统管理',

     icon: 'documentation',

     roles: ['admin', 'editor'] // you can set roles in root nav

   },

   children: [

     {

       path: 'user',

       component: () => import('@/views/admin/user'),

       name: 'User',

       meta: {

         title: '用户管理',

         roles: ['admin'] // or you can only set roles in sub nav

       }

     }

   ]

 },

 // 404 page must be placed at the end !!!

 { path: '*', redirect: '/404', hidden: true }

]

4. 验证用户管理


执行npm run dev再次打开系统,登录后界面如下:

微信图片_20230709214522.png



可以看到,管理平台中的用户管理已成功集成到我们改造后的vue-element-admin工程,其他功能搭建按照同样方法即可。


五. 结语

本篇就如何改造vue-element-admin接入到后台实现youlai-mall后台前端管理平台的搭建。其中涉及的前后端分离解决浏览器跨域问题的解决原理,vuex、vue-router的应用,觉得很有意义去亲手实践一下。最后附上完整代码下载地址,出现问题可比对改造完成的项目:


youlai-mall


youlai-mall-admin


相关文章
|
9月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1304 3
|
12月前
|
人工智能 自然语言处理 JavaScript
通义灵码2.5实战评测:Vue.js贪吃蛇游戏一键生成
通义灵码基于自然语言需求,快速生成完整Vue组件。例如,用Vue 2和JavaScript实现贪吃蛇游戏:包含键盘控制、得分系统、游戏结束判定与Canvas动态渲染。AI生成的代码符合规范,支持响应式数据与事件监听,还能进阶优化(如增加启停按钮、速度随分数提升)。传统需1小时的工作量,使用通义灵码仅10分钟完成,大幅提升开发效率。操作简单:安装插件、输入需求、运行项目即可实现功能。
573 4
 通义灵码2.5实战评测:Vue.js贪吃蛇游戏一键生成
|
7月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
7月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1220 2
Spring Boot 3.x 微服务架构实战指南
|
11月前
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
557 102
|
NoSQL MongoDB 微服务
微服务——MongoDB实战演练——文章评论的基本增删改查
本节介绍了文章评论的基本增删改查功能实现。首先,在`cn.itcast.article.dao`包下创建数据访问接口`CommentRepository`,继承`MongoRepository`以支持MongoDB操作。接着,在`cn.itcast.article.service`包下创建业务逻辑类`CommentService`,通过注入`CommentRepository`实现保存、更新、删除及查询评论的功能。最后,新建Junit测试类`CommentServiceTest`,对保存和查询功能进行测试,并展示测试结果截图,验证功能的正确性。
291 2
|
9月前
|
负载均衡 监控 Java
微服务稳定性三板斧:熔断、限流与负载均衡全面解析(附 Hystrix-Go 实战代码)
在微服务架构中,高可用与稳定性至关重要。本文详解熔断、限流与负载均衡三大关键技术,结合API网关与Hystrix-Go实战,帮助构建健壮、弹性的微服务系统。
854 1
微服务稳定性三板斧:熔断、限流与负载均衡全面解析(附 Hystrix-Go 实战代码)
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——MongoTemplate实现评论点赞
本节介绍如何使用MongoTemplate实现评论点赞功能。传统方法通过查询整个文档并更新所有字段,效率较低。为优化性能,采用MongoTemplate对特定字段直接操作。代码中展示了如何利用`Query`和`Update`对象构建更新逻辑,通过`update.inc("likenum")`实现点赞数递增。测试用例验证了功能的正确性,确保点赞数成功加1。
272 0
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
225 0
|
10月前
|
数据采集 弹性计算 自然语言处理
微服务化采集平台:可扩展性与容错机制
本文介绍一个基于财经场景的微服务化数据采集平台,解决新浪财经等内容站点信息分散、结构多变、更新频繁等痛点。通过代理配置、动态解析、自动分类与容错机制,实现要闻、突发、证券资讯的高效抓取与结构化处理,为舆情监控、NLP分析和投研建模提供实时数据支撑,提升市场响应速度与数据质量。
180 1
微服务化采集平台:可扩展性与容错机制