vue2使用axios封装请求数据,教会你封装,简单易懂,轻松学会axios封装请求 ...

莱莱  金牌会员 | 2024-6-18 19:02:05 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 573|帖子 573|积分 1719

  1. import axios from "axios";
  2. // 封装axios构造函数请求
  3. // 1.先是自定义一个方法名
  4. // 2.然后获取头部token值
  5. // 3.延长器设不设置都可以
  6. const instance = axios.create({
  7.   baseURL: 'http://localhost:8081/wx',
  8.   headers: {
  9.     // X-Litemall-Token这个名称就固定这个
  10.     'X-Litemall-Token' : localStorage.getItem("X-Litemall-Token")
  11.   }
  12. })
  13.   
  14. // 请求拦截器
  15. // 1.请求拦截器,在发请求之前,请求拦截器可以检测到发起请求之前需要做什么事情,把需要做的事情,放在请求拦截器之前
  16. axios.interceptors.request.use(config => {
  17.   // 1.这里我设置了,在请求之前,先开始进度条的动画
  18.   // 2.返回请求数据
  19.   if(localStorage.setItem['X-Litemall-Token'] !== null ) {
  20.     console.headers.common['X-Litemall-Token'] = localStorage.getItem('X-Litemall-Token')
  21.   }
  22.   return config
  23. })
  24. // 响应拦截器
  25. // 1.相应上面的请求拦截器的需求
  26. // 2.把上面的请求拦截器的需求全部做到
  27. axios.interceptors.response.use(res => {
  28.   return res.data
  29. }, error => {
  30.   return Promise.reject(new Error('faile'))
  31. })
  32. // 对外暴露前面创建的构造方法
  33. export default instance
复制代码
2、完成上面的步骤还不够,还需要再创建一个文件夹api,然后在文件夹内里创建自定义的文件名(我创建的是cartApi.js)文件名根据自己的需求命名
下面就是根据自己的请求接口以及数据参数请求,下面的请求是一些常见的post、get请求以及传参啥的(仅供参考,可以参考下面代码,根据自己需求修改)
  1. 首先导入刚刚封装好的request.js文件  路径存储根据自己修改
  2. import request from '@/utils/request'
  3. //地区列表
  4. export function GeteGionList() {
  5.   return request({
  6.    method:'GEt',
  7.    url:'/region/list'
  8.   })
  9. }
  10. //添加收货地址
  11. export function setShippingAddress(data) {
  12.   return request({
  13.    method:'POST',
  14.    url:"/address/setShippingAddress",
  15.    data: data
  16.   })
  17. }
  18. //设置默认地址
  19. export function Altedstate(id) {
  20.    return request({
  21.       method:'GET',
  22.       url:'/address/default',
  23.       params: {
  24.         id:id
  25.       }
  26.       
  27.    })
  28. }
  29. //获取订单列表
  30. export function GetOrder(pages,id) {
  31.   return request({
  32.     method:'get',
  33.     params: {
  34.         page:pages.page,
  35.         limit:pages.limit,
  36.         id:id,
  37.     },
  38.     url:`/order/list`,
  39.   })
  40. }
  41. //添加订单
  42. export function PostAddorder(data) {
  43.   return request({
  44.     data:data,
  45.     method:'POST',
  46.     url:'/order/goods',
  47.   })
  48. }
  49. //添加商品收藏
  50. export function PostAddinsert(id) {
  51.   return request({
  52.     method:'GET',
  53.     url:`/collect/insert?id=${id} `,
  54.   })
  55. }
  56. // 获取收藏
  57. export function Getcollect() {
  58.   return request({
  59.     method:'GET',
  60.     url:`/collect/list`,
  61.   })
  62. }
  63. // 删除收藏
  64. export function Deletdcollect(arr) {
  65.   return request({
  66.     method:'post',
  67.     data: {
  68.       id:arr
  69.     },
  70.     url:`/collect/delete`,
  71.   })
  72. }
  73. //获取商品足迹
  74. export function Getfootprint() {
  75.   return request({
  76.     method:'get',
  77.     url:`/footprint/select`,
  78.   })
  79. }
  80. // 获取首页的左边工具栏
  81. // http://localhost:8081/wx/catalog/list?page=1&limit=11
  82. export function setToolList () {
  83.   return request.get('/catalog/list', {
  84.     params: {
  85.       page: 1,
  86.       limit: 20
  87.     }
  88.   })
  89. }
复制代码
3、完玉成部封装之后,需要搞定的是在我们的vue组件请求数据
第一步:在自己的vue组件当中,导入我们刚刚写好的封装(仅供参考,可以参考下面代码,根据自己需求修改)
  1. import {setToolList} from '@/api/shopping'
复制代码
第二步:导入完成之后,在script内里编写请求代码,可以写在methods让按钮调用数据,也可以写在created()内里,在这里我写在methods内里,然后让created调用数据
  1. methods: {
  2.     // 工具栏的请求
  3.     async getToolList()  {
  4.       await setToolList().then(res => {
  5.         this.toolList = res.data.data.list
  6.         console.log(this.toolList)
  7.       })
  8.     }
  9.   },
  10.   created() {
  11.     this.getToolList()
  12.   }
复制代码
第三:完整请求数据代码:
  1. <template>  <div>    {{ toolList }}  </div></template><script>import {setToolList} from '@/api/shopping'
  2. export default {  data() {    return {      toolList: [],    }  },  methods: {
  3.     // 工具栏的请求
  4.     async getToolList()  {
  5.       await setToolList().then(res => {
  6.         this.toolList = res.data.data.list
  7.         console.log(this.toolList)
  8.       })
  9.     }
  10.   },
  11.   created() {
  12.     this.getToolList()
  13.   }
  14. }</script><style lang="scss" scope></style>
复制代码
完成以上步骤就能请求到数据啦,如果请求不到数据,可以随时留言哦宝宝

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表