• axios的封装


    axios的封装

    1. src文件夹下新建http文件夹,用来放网络请求相关的文件

    2. src/http文件夹下,创建index.js文件,对axios进行封装

      const { data } = require('autoprefixer');
      const axios = require('axios');
      const { error } = require('shelljs');
      
      axios.defaults.baseURL = 'http://192.168.56.100:8888' //vue请求后端地址
      
      axios.defaults.timeout = 10000; // 超时设置
      
      axios.defaults.withCredentials = true; // 跨域访问需要发送cookie时,一定要加上
      
      
      axios.defaults.headers['Content-Type'] = 'application/json'; //设置默认提交json
      axios.defaults.transformRequest = data => JSON.stringify(data);//把数据对象序列化成json字符串

      // 对请求拦截器,和响应拦截器进行封装
      
      /*
      请求拦截器,发送请求前需要调用这个函数
      当没有登录时,直接跳转到登录页
      请求发送前把token获取,设置到header中
      */
       
       
      axios.interceptors.request.use(config=>{
          //从localStorage中获取token
          let token = localStorage.getItem('token');
          // 如果有token,就把token设置到请求头中Authorization字段中
          token && (config.headers.Authorzation = token);
          return config;
      },error => {
          return Promise.reject(error)
      });
      
      /*
      响应拦截器,当后端返回数据给vue时,会调用这个函数
      
      每次返回403错误时,跳转到login
      */
      axios.interceptors.response.use(response =>{
          //当响应码是2xx的情况时,进入这里
          return response.data;
      },error =>{
          //当响应码不是2xx的情况是,进入这里
          return error
      });
      
      
      //使用上面的axios对象,对get和post请求进行封装
      
      /*
      get方法,对应get请求
      @param {String} url [请求的url地址]
      @param {Object} params [请求时携带的参数]
      */
      export function get(url,params,headers){
          return new Promise((resolve,reject) =>{
              axios.get(url,{params,headers}).then(res=>{
                  resolve(res.data.ResulObj)
              }).catch(err =>{
                  reject(err.data)
              })
          })
      }
      
      
      /*
      post方法,对应post请求
      @param {String} url [请求的url地址]
      @param {Object} params [请求时携带的参数]
      */
      export function post(url,params,headers){
          return new Promise((resolve,reject) =>{
              axios.post(url,params,headers).then(res=>{
                  resolve(res.data)
              }).catch(err =>{
                  reject(err.data)
              })
          })
      }
      
      //一定要导出函数
      export default axios;
      
    3. src/http目录下创建apis.js文件,用来写接口地址列表

      import { get,post } from './index'
      
      export const login = (params,headers) => post("/user/login/",params,headers)
      

    CORS跨域

    #允许所有源来跨域
    CORS_ORIGIN_ALLOW_ALL =True
    
    #或者设置跨域请求白名单
    # CORS_ORIGIN_WHITELIST = (
    #     'http://127.0.0.1:8080',
    #     'http://localhost:8080',
    # )
    
    #允许携带cookie
    CORS_ALLOW_CREDENTALS = True
    

    前后端联调思路

    1. 写完视图函数,使用postman进行接口测试,保证后端接口没有问题

    2. 在vue中写页面,向后端发送数据

  • 相关阅读:
    使用vue-cli初始化vue项目
    easyUI使用datagrid-detailview.js实现二级列表嵌套
    easyUI使用dailog实现弹出框带表单功能
    vue进行文件下载
    TypeError: Cannot read property 'length' of null
    org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'null' to required type 'double' for property 'band'; nested exception is org.springframework.core.convert.Con
    桑叶黑芝麻糊,从头到脚通补
    家庭中成药使用方法一览表
    儿科常见疾病的中成药疗法
    常见病饮食宜忌速查手册
  • 原文地址:https://www.cnblogs.com/qx1996liu/p/13892978.html
Copyright © 2020-2023  润新知