当前位置:   article > 正文

vue-element-admin 前后端联调 请求后端接口_vue-element-admin登录页面请求后端数据

vue-element-admin登录页面请求后端数据

安装

  1. git clone https://gitee.com/panjiachen/vue-element-admin.git client
  2. cd client
  3. git branch -a
  4. git checkout -b i18n remotes/origin/i18n
  5. git config --global url."https://".insteadOf git://
  6. npm install
  7. npm run dev
  • 需要切换分支到 i18n,否则不支持国际化(中文)功能

  • npm install 要多试几次,因为中间会连接 gitbub 下载一些依赖,网络不稳定会导致失败

  • npm run dev 运行后回自动打开浏览器,使用的端口是 9527

后端路径

开发环境下执行下面命令

npm run dev
  • 会同时启动 mock-server

在开发环境下,后端访问路径起始路径配置在文件 .env.development

VUE_APP_BASE_API = '/dev-api'
  • 默认向后台的请求都发给 http://localhost:9527/dev-api 的 mock-server,获得的都是模拟数据

  • 需要跟真实后台联调时,可以改动以上地址为 VUE_APP_BASE_API = 'http://localhost:8080/api';或者改为 VUE_APP_BASE_API = '/api',然后在 vue.config.js 中添加代理:

  • 注释掉:before: require('./mock/mock-server.js')

  1. devServer: {
  2. proxy: {
  3. '/api': {
  4. target: 'http://localhost:8080',
  5. changeOrigin: true
  6. }
  7. },
  8. // before: require('./mock/mock-server.js') 记得注释掉这一行代码
  9. }

发送请求的 axios 工具被封装在 src/utils/request.js 中

  1. import axios from 'axios'
  2. import { MessageBox, Message } from 'element-ui'
  3. import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. // create an axios instance
  6. const service = axios.create({
  7.  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  8.  // withCredentials: true, // send cookies when cross-domain requests
  9.  timeout: 5000 // request timeout
  10. })
  11. // ...

原有代码的 URI 路径都是这样的:

  1. /vue-element-admin/user/login
  2. /vue-element-admin/user/info
  3. /vue-element-admin/user/logout
  4. ...

如果觉得不爽,可以来一个全局替换

  1. /user/login
  2. /user/info
  3. /user/logout
  4. ...

token 的请求头修改一下,在 src/utils/request.js 中

  1. ...
  2. service.interceptors.request.use(
  3. config => {
  4. // do something before request is sent
  5. if (store.getters.token) {
  6. // let each request carry token
  7. // ['X-Token'] is a custom headers key
  8. // please modify it according to the actual situation
  9. config.headers['Authorization'] = getToken() //将['X-Token']替换为['Authorization']
  10. }
  11. return config
  12. },
  13. error => {
  14. // do something with request error
  15. console.log(error) // for debug
  16. return Promise.reject(error)
  17. }
  18. )
  19. ...

修改 token 保存位置

这里对 token 存储进行了修改,原框架中的 token 既存储在 cookie 中,又存储在了 store.state 中中,这样对代码维护造成了困难,每次修改 token 都要修改两个地方

由于 token 没有响应式的需求,所以将 token 统一存储在 cookie 中,而 vuex 中相关 SET_TOKEN 的代码都注释掉

这样每次读取和设置 token 都从 @/utils/auth 中的方法来操作 cookie 即可

  1. const state = {
  2. // token: getToken(),
  3. ...
  4. }
  5. const mutations = {
  6. // SET_TOKEN: (state, token) => {
  7. // state.token = token
  8. // },
  9. ...
  10. }

接下来需要将所有用到 vuex 中 token 的代码都注释掉:

  • 全局搜索 SET_TOKEN ,将相关代码注释掉
  • 全局搜索 state.token ,将相关代码注释掉
  • 全局搜索 user.token ,将相关代码注释掉
  • 全局搜索 getters.token ,将相关代码注释掉

以后要修改/获取 token 只需导入 @/utils/auth 中的方法即可:

  1. export function getToken() {
  2. return Cookies.get(TokenKey)
  3. }
  4. export function setToken(token) {
  5. return Cookies.set(TokenKey, token)
  6. }
  7. export function removeToken() {
  8. return Cookies.remove(TokenKey)
  9. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/111786
推荐阅读
相关标签
  

闽ICP备14008679号