航空前端2

1.导入axios

在终端导入npm install axios -save-dev

2.在src中创建api文件,放所以向服务端发送请求的代码

3.再创建utils文件放工具类

4.再其中创建request.js里面放发送请求的代码

import axios from 'axios' //导入axios对象
//从element-ui导出对话框(messagebox用于当用户请求失败或者请求成功弹出相应提示)
import { Message, MessageBox } from 'element-ui' 

// 1.创建axios实例
const service = axios.create({
  // 公共接口--这里注意后面会讲,url = base url + request url
  //后台请求的接口地址
  baseURL: process.env.VUE_APP_SERVER_URL,

  // baseURL: 'https://api.example.com',
  // 超时时间 单位是ms,这里设置了5s的超时时间,五秒钟还没得到回应则报错
  timeout: 5 * 1000
})

// 2.请求拦截器request interceptor
service.interceptors.request.use(
  config => {
    // 发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加
    // 注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie
    if (store.getters.token) {
      // config.params = {'token': token}    // 如果要求携带在参数中
      // config.headers.token = token;       // 如果要求携带在请求头中
      // bearer:w3c规范
      config.headers['Authorization'] = 'Bearer ' + getToken()
    }
    return config
  },
  error => {
    // do something with request error
    // console.log(error) // for debug
    return Promise.reject(error)
  }
)

// 设置cross跨域 并设置访问权限 允许跨域携带cookie信息,使用JWT可关闭
service.defaults.withCredentials = false

service.interceptors.response.use(
  // 接收到响应数据并成功后的一些共有的处理,关闭loading等
  response => {
    const res = response.data
    // 如果自定义代码不是200,则将其判断为错误。
    if (res.code !== 200) {
      // 50008: 非法Token; 50012: 异地登录; 50014: Token失效;
      if (res.code === 401 || res.code === 50012 || res.code === 50014) {
        // 重新登录
        MessageBox.confirm('会话失效,您可以留在当前页面,或重新登录', '权限不足', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning',
          center: true
        }).then(() => {
          window.location.href = '#/login'
        })
      } else { // 其他异常直接提示
        Message({
          showClose: true,
          message: '⚠' + res.message || 'Error',
          type: 'error',
          duration: 3 * 1000
        })
      }
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
    }
  },
  error => {
    /** *** 接收到异常响应的处理开始 *****/
    // console.log('err' + error) // for debug
    Message({
      showClose: true,
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)
export default service

5.点中package.json并创建一个文件命名.env用于放配置信息即环境变量

写入

VUE_APP_SERVER_URL='http://localhost:8088'

 

表示连接8080端口

 

6.在api文件中加入billboard.js文件(写接口)

import request from '@/utils/request' //导入环境变量

//把它导出出去为了给其他的使用
//接口
export function getBillboard(){
    return request({
        url:'/xxx',
        method:'get'
    })
}

 

7.再回到home.vue这边

 

定义一个异步方法(请求一般都是异步)

//调用写的方法接口 getBillboard为方法名,''中为文件相对地址
import {getBillboard}  from '../api/billboard'

并调用前面的接口方法(发送get请求)

异步方法:

methods:{
        async fetchBillboard(){
            //then方法里面写一个回调函数value为服务器给我们的回应
             getBillboard().then((value)=>{
                 //给data做一个绑定1、数据变视图变;2、视图导致数据变;视图变数据变就是监听事件,然后在回调中改变数据;
                const {data}=value
                this.billboard=data
             }
            )
        }
    }

再创建一个生命周期方法

//生命周期创建成功就调用
    created(){
        //也就是说当页面被创建的时候去请求后台去调用fetchBillboard()而fetchBillboard()里面会调用getBillboard()
        //getBillboard()会发送get请求,然后.then就是服务器端发送回来之后,value就是服务器返回来的json对象
        //然后再把它绑定到data对象再给到billboard对象,最后绑定到div上
        this.fetchBillboard()
    }

 

<script>
//调用写的方法接口 getBillboard为方法名,''中为文件相对地址
import { getBillboard } from "../api/billboard";
export default {
    name:'Home',
    data(){
        return{
            billboard:''
            //要获取后端billboard里content的内容时
            // billboard:{
            //     content:''
            // }
        }
    },
    //生命周期创建成功就调用
    created(){
        //也就是说当页面被创建的时候去请求后台去调用fetchBillboard()而fetchBillboard()里面会调用getBillboard()
        //getBillboard()会发送get请求,然后.then就是服务器端发送回来之后,value就是服务器返回来的json对象
        //然后再把它绑定到data对象再给到billboard对象,最后绑定到div上
        this.fetchBillboard()
    },
    //定义一个异步方法
    methods:{
        async fetchBillboard(){
            //then方法里面写一个回调函数value为服务器给我们的回应
             getBillboard().then((value)=>{
                 //给data做一个绑定1、数据变视图变;2、视图导致数据变;视图变数据变就是监听事件,然后在回调中改变数据;
                const {data}=value
                this.billboard=data
             }
            )
        }
    }
    
}
</script>

 

8.创建中间件来模拟后端来放送get请求,中间件的创建和使用在以前博客已经写过

https://blog.youkuaiyun.com/MCCLS/article/details/117885943?spm=1001.2014.3001.5501



var express=require('express');
var app=express();
 
//解决跨域问题,网上成熟的解决方案,直接拷贝
app.all('*',function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-with");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1')
    res.header("content-Type", "application/json;charset=utf-8");
    next();
})

//发送get请求
app.get('/xxx',function(req,res){
    var billboard='航空查询'
    res.send(billboard);
})
 
//一个node执行的监听
app.listen(5632,function(){
    console.log('5632,网易严选中间件,已经运行!')
})


运行

但由于只是个简单的get请求所以要把request.js的部分代码进行注释防止报错

import axios from 'axios' //导入axios对象
//从element-ui导出对话框(messagebox用于当用户请求失败或者请求成功弹出相应提示)
import { Message, MessageBox } from 'element-ui' 


// 1.创建axios实例
const service = axios.create({
  // 公共接口--这里注意后面会讲,url = base url + request url
  //后台请求的接口地址
  // baseURL: process.env.VUE_APP_SERVER_URL,
  baseURL: 'http://localhost:5632',

  // baseURL: 'https://api.example.com',
  // 超时时间 单位是ms,这里设置了5s的超时时间,五秒钟还没得到回应则报错
  timeout: 5 * 1000
})

// // 2.请求拦截器request interceptor
// service.interceptors.request.use(
//   config => {
//     // 发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加
//     // 注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie
//     if (store.getters.token) {
//       // config.params = {'token': token}    // 如果要求携带在参数中
//       // config.headers.token = token;       // 如果要求携带在请求头中
//       // bearer:w3c规范
//       config.headers['Authorization'] = 'Bearer ' + getToken()
//     }
//     return config
//   },
//   error => {
//     // do something with request error
//     // console.log(error) // for debug
//     return Promise.reject(error)
//   }
// )

// // 设置cross跨域 并设置访问权限 允许跨域携带cookie信息,使用JWT可关闭
// service.defaults.withCredentials = false

// service.interceptors.response.use(
//   // 接收到响应数据并成功后的一些共有的处理,关闭loading等
//   response => {
//     const res = response.data
//     // 如果自定义代码不是200,则将其判断为错误。
//     if (res.code !== 200) {
//       // 50008: 非法Token; 50012: 异地登录; 50014: Token失效;
//       if (res.code === 401 || res.code === 50012 || res.code === 50014) {
//         // 重新登录
//         MessageBox.confirm('会话失效,您可以留在当前页面,或重新登录', '权限不足', {
//           confirmButtonText: '确定',
//           cancelButtonText: '取消',
//           type: 'warning',
//           center: true
//         }).then(() => {
//           window.location.href = '#/login'
//         })
//       } else { // 其他异常直接提示
//         Message({
//           showClose: true,
//           message: '⚠' + res.message || 'Error',
//           type: 'error',
//           duration: 3 * 1000
//         })
//       }
//       return Promise.reject(new Error(res.message || 'Error'))
//     } else {
//       return res
//     }
//   },
//   error => {
//     /** *** 接收到异常响应的处理开始 *****/
//     // console.log('err' + error) // for debug
//     Message({
//       showClose: true,
//       message: error.message,
//       type: 'error',
//       duration: 5 * 1000
//     })
//     return Promise.reject(error)
//   }
// )
export default service //把对象导出出去

 

成功显示后端数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值