• 前端调用webapi(三)


    vue前端调用webapi的问题:(根据vue-admin-template)做的调整

    1、引入axios(解决调用方法创建问题)

     在request.js中,引入axios,并创建实例

    import axios from 'axios'

    // create an axios instance
    const service = axios.create({
      baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
      // withCredentials: true, // send cookies when cross-domain requests
      timeout: 5000 // request timeout
    })

    2、拦截机制的配置定义,这里定义的是每次申请需要的携带的参数内容

    service.interceptors.request.use(
      config => {
        // do something before request is sent

        if (store.getters.token) {
          // let each request carry token 让每一个request携带token
          // ['X-Token'] is a custom headers key // x-Token是一个客户端头关键字
          // please modify it according to the actual situation//请根据实际情况定义
          config.headers['auth'] = getToken()
        }
        return config
      },
      error => {
        // do something with request error
        console.log(error) // for debug
        return Promise.reject(error)
      }
    )

             用于拦截器创建,目的是让每一个request申请都携带token内容,

             token内容,在登陆时获取,并写入内存

    3、去除mock拦截(解决404问题)根目录下main.js相关mock内容注释掉

                   // mock 模拟数据,这里要清除 否则会产生404错误

    // if (process.env.NODE_ENV === 'production') {
    //   const { mockXHR } = require('../mock')
    //   mockXHR()
    // }

    4、修改VUE_APP_BASE_API

             VUE_APP_BASE_API ='http://localhost:8088/api/' 

    5、修改request.js中拦截器的返回值内容,根据自己定义的返回状态来定义是不是又返回值,这里可以考虑权限问题

    service.interceptors.response.use(response=>)
    原模板下的
      if (res.code !== 20000) 一直报错,是因为后端没有返回code这个内容,这里取不到。而res.code的内容时自己定义的,
    根据模板,后端webapi至少要有几个状态判断,未登录、其他客户端登陆(非本系统意外的接口调用)、Token过期。
    正常登陆的返回码时2000

    6、接口调用

            因为定义了VUE_APP_BASE_API ,在接口调用的时候要注意,拼接结果

            

     Test() {
          console.log('开始数据测试')
          // 測試已經調用成功了,但是返回的數據怎麽顯示出來
          this.$ajax
            .get('/api/test/')
            .then(res => {
              console.log('数据获取成功')
              console.log(res)
            })
        },
  • 相关阅读:
    手误【删库】 == 跑路,不存在的 Linux回收站
    大规模集群全网数据备份解决方案
    宝塔Nginx配置防盗链
    Markdown语法
    QFtp编程模型(二)
    Ubuntu驱动程序开发6-Linux内核启动与程序烧写
    Ubuntu下TFTP、NFS和SSH服务搭建
    ubuntu环境变量的三种设置方式
    QByteArray详解
    mysql的索引下推理解和实践
  • 原文地址:https://www.cnblogs.com/ZhangYaBin/p/12743007.html
Copyright © 2020-2023  润新知