axios简单封装

本文介绍了如何使用axios库进行HTTP请求的封装,包括GET、POST、PUT和DELETE方法,并展示了如何在获取API数据后,在地图上添加标记和弹窗交互。
摘要由CSDN通过智能技术生成
import axios from "axios"
import api from "./apis"
import qs from "qs"
import store from '@/store/index.js';
// store.state
// axios.defaults.headers.Authorization = "Bearer " + getCookie("access_token")
const request = {
  // 用法如下,调用时需要传入topic(api名),参数随api不同以对应
  post(topic, data) {
    store.dispatch('loadingStart', {
      text: "加载中",
      opacity: 0.5
    })
    return new Promise((resolve, reject) => {
      axios.post(api(topic), data).then(response => {
        store.dispatch('loadingDone')
        resolve(response.data)
      }, err => {
        store.dispatch('loadingDone')
        reject(err)
      })
    })
  },
  get(topic, data) {
    store.dispatch('loadingStart', {
      text: "加载中",
      opacity: 0.5
    })
    return new Promise((resolve, reject) => {
      axios.get(api(topic), {
        params: data
      })
        .then(response => {
          store.dispatch('loadingDone')
          resolve(response.data)
        }, err => {
          store.dispatch('loadingDone')
          reject(err)
        })
    })
  },
  put(topic, data) {
    store.dispatch('loadingStart', {
      text: "加载中",
      opacity: 0.5
    })
    return new Promise((resolve, reject) => {
      axios.put(api(topic), qs.stringify(data))
        .then(response => {
          store.dispatch('loadingDone')
          resolve(response.data)
        }, err => {
          store.dispatch('loadingDone')
          reject(err)
        })
    })
  },
  delete(topic, data) {
    store.dispatch('loadingStart', {
      text: "加载中",
      opacity: 0.5
    })
    return new Promise((resolve, reject) => {
      axios.delete(api(topic), {
        params: data
      })
        .then(response => {
          store.dispatch('loadingDone')
          resolve(response.data)
        }, err => {
          store.dispatch('loadingDone')
          reject(err)
        })
    })
  }
}
function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i].trim();
    if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
  }
  return "";
}
export default request


使用

let soilPoint = await request.get("soitPoint", {
        appCode: "changshan"
      })
      for (let item of soilPoint.result) {
        let marker = new mapboxgl.Marker()
          .setLngLat([item.lon, item.lat])
          .addTo(this.map);
        // 添加标记的弹窗事件
        var popup = new mapboxgl.Popup()
          .setHTML(`<h3>${item.name}</h3>`)
        marker.setPopup(popup);
        // 点击标记时显示弹窗
        marker.on('click', function () {
          marker.togglePopup();
        });
      }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值