2021-3-22

前端实习-第2天

星期一。第一个任务就是在某vue小项目里封装axios,就参考了大项目以及csdn抄下来,mentor改来改去,然后就低头笑了。哎。
一般要在src目录下新建一个名为api的文件夹,下面新建一个api.js写axios的put、delete、get、post方法的封装、baseurl,以及一个ports.js的文件统一存放请求方法、接口、参数。

//api.js
import Vue from 'vue'
import axios from 'axios' // 引入axios

const AJAX = axios.create({
  baseURL: 'http://10.18.98.18:8081/server',
  timeout: 100000,
  headers: { 'Content-Type': 'application/json; charset=UTF-8' },
  withcredentials: false
})

// 请求拦截器
AJAX.interceptors.request.use(
  config => {
    // TODO: 开始loading
    return config
  },
  error => {
    console.log('发送请求错误', error)
    return Promise.error(error)
  }
)

// 响应拦截器
AJAX.interceptors.response.use(
  response => {
    // TODO: 结束loading
    if (response.status === 200) {
      return Promise.resolve(response.data)
    } else {
      return Promise.reject(response)
    }
  },
  error => {
    if (error && error.response && error.response.status) {
      Vue.prototype.$message.error(error.message)
      return Promise.reject(error.response)
    } else {
      Vue.prototype.$message.error(error)
    }
  }
)

// 封装get方法
export function get (url, params) {
  return new Promise((resolve, reject) => {
    AJAX.get(url, {
      params
    })
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err.data)
      })
  })
}

// 封装post方法
export function post (url, data) {
  console.log(data)
  return new Promise((resolve, reject) => {
    AJAX.post(url, data)
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err.data)
      })
  })
}

export function put (url, params) {
  return new Promise((resolve, reject) => {
    AJAX.put(url, params)
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err.data)
      })
  })
}

export function remove (url, params) {
  console.log(url, params)
  return new Promise((resolve, reject) => {
    AJAX.delete(url, { params })
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err.data)
      })
  })
}

//ports.js
import { get, post, remove, put } from './api'
export const GetPoint = p => get('/api/Camera/CameraList', p)
export const DeletePoint = p => remove('/api/Camera/DeleteCamera', p)
export const StartPoint = p => post('/api/Camera/ResetCamera', p)
export const StopPoint = p => post('/api/Camera/PauseCamera', p)
export const AddPoint = p => post('/api/Camera/AddCamera', p)
export const EditPoint = p => put('/api/Camera/UpdataCamera', p)
export const RealTime = p => post('/api/realtime', p)
export const GetImageData = p => get('/api/image_data', p)

如此便可在vue文件里导入方法进行请求了

import { GetPoint, DeletePoint, StopPoint, StartPoint, AddPoint, EditPoint } from '@/api/ports'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值