初始化对接端台API

上一篇了实现了我的项目初始化,然而那个只是把 vue-admin-template 模版简略的初始化了一下,新增了tagsview标签快捷导航栏,其余的没什么变动。

这一篇了就实现了和后端的Jwt token认证,登录,退出,根本的table list接口数据申请。首先看看成果。

其实看起来和第一篇的初始化成果差不多,惟一的区别是,第一篇初始化接口还是用的Mock接口, 而这一篇是对接的后盾FastAPI接口。

接口文档

首先看看,一共对接了几个接口, 接口格局等。

批改Vue后盾模版代码

很多中央文档和代码联合着看,根本都能解决问题。
vue-element-admin应用文档 https://panjiachen.github.io/...

接口申请地址批改

首先查看axios封装,查看axios封装的对象baseURL地址。

baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url

能够看到地址变量是 VUE_APP_BASE_API,如果有点教训的话,我的项目文件很显著, 有个.env.development的文件,点开外面就有VUE_APP_BASE_API间接批改为
VUE_APP_BASE_API = 'http://127.0.0.1:8010/api/admin/v1', 切实不晓得,还能够全局搜寻,这样的配置文件个别全局惟一。

批改src/api/user 还有table接口申请地址, 而后查看申请形式是否和后盾统一,申请参数在调用的中央查看。
如登录批改后的

export function login(data) {  return request({    url: '/auth/login/access-token',    method: 'post',    data  })}

对立拦挡设置 文档和代码都有阐明,规定了后盾传入数据的格局为以下格局

{      "code": 200,      "data": "数据(能够多个字段嵌套)",      "message": "提示信息",}

因为我后盾规定胜利,code都为200, 所以在axios拦截器外面,把胜利条件批改为200, 不为200的都拦挡,而后弹出message作为提醒。

JWT认证登录

查看代码src/views/login/index.vue
先理清登录逻辑流程。先验证数据,而后dispatch到Vuex外面异步发送申请。
  • 1 验证数据

验证数据是导入的 import { validUsername } from '@/utils/validate'
我后盾规定, 应用的邮箱为账号登录的,所以更改验证账号,为验证邮箱地址。

/** * @param {string} str * @returns {Boolean} */// 这是之前验证username 只能为 admin 和 editorexport function validUsername(str) {  const valid_map = ['admin', 'editor']  return valid_map.indexOf(str.trim()) >= 0}/** * @param {string} str * @returns {Boolean} * */// 这是新增的验证邮箱的函数export function validEmail(str) {  const emailReg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/  return emailReg.test(str)}

而后更改对应的验证逻辑, 最初在去Vuex外面src/store/modules/user.js查看申请的逻辑。
申请胜利后,把返回数据data.token保留到vuex 和 cookie外面各存了一次。

只是我登录胜利后的接口返回值,原本是返回的access_token字段的,前面改为token

{  "code": 200,  "message": "Success",  "data": {    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTUxNDIzMzQsInN1YiI6IjQifQ.3pdVG5eJIdNyNOdFiJG4GvQ9Y7bij73nW6UBBhL8b94",    "token_type": "Bearer"  }}

而后我验证接口的逻辑是 在headers外面增加 token字段验证。
所以要去批改axios拦截器

// request interceptorservice.interceptors.request.use(  config => {    // do something before request is sent    if (store.getters.token) {      // let each request carry token      // ['X-Token'] is a custom headers key      // please modify it according to the actual situation      config.headers['token'] = getToken()    // 这里的X-Token改为token 前后端协商    }    return config  },  error => {    // do something with request error    console.log(error) // for debug    return Promise.reject(error)  })

根本的登录就实现了。

申请用户信息

登录完之后,就看到发送了申请用户信息.
其实逻辑写在这里在路由拦挡 src/permission.js
查看如何保留的返回值, 去Vuex外面查看src/store/modules/user.js,
actions外面异步解决完申请后, 发送了申请, 获取到用户数据后,在commit 到 mutations 保留用户数据

const { nickname, avatar } = data  // 这里我返回的是nickname 所以批改commit('SET_NAME', nickname)commit('SET_AVATAR', avatar)

个人主页批改

  • 1 创立个人主页页面
    依照我的项目格调,在src/views/文件夹下,创立profile文件夹,而后创立一个vue组件,增加一个h2标签 集体核心作为标记
  • 2 增加集体核心路由

路由格局参考文档: https://panjiachen.gitee.io/v...

// 集体核心  {    path: '/profile',   // 路由地址    component: Layout,    redirect: '/profile/index',    hidden: true,    // 不显示在侧边栏    children: [      {        path: 'index',        component: () => import('@/views/profile/index'),        name: 'Profile',        meta: { title: '集体核心', icon: 'user', noCache: true }      }    ]  }
  • 3 批改头部信息

src/layout/components/Navbar
删掉其余的路由, 批改为

<router-link to="/">       <el-dropdown-item>            首页      </el-dropdown-item></router-link><router-link to="/profile">      <el-dropdown-item>        我的主页      </el-dropdown-item></router-link><el-dropdown-item divided @click.native="logout">      <span style="display:block;">退出</span></el-dropdown-item>

测试Table list数据

那个批改逻辑和下面差不多

到这里差不多就齐全初始化好了。

代码GitHub地址

见集体网站 https://www.charmcode.cn/arti...