zoukankan      html  css  js  c++  java
  • 前端调用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命令(文件操作):【转载】find 命令的参数详解
    每天一个linux命令(文件操作):【转载】find命令之xargs
    每天一个linux命令(文件操作):【转载】find命令之exec
    每天一个linux命令(文件操作):【转载】find 命令概览
    每天一个linux命令(文件操作):【转载】locate命令
    js 常见bug
    form表单 post 请求打开新页面
    vue 鼠标移入移出 列表蒙层展示
    js 递归总结
    新编家庭医生大全集
  • 原文地址:https://www.cnblogs.com/ZhangYaBin/p/12743007.html
Copyright © 2011-2022 走看看