首页 > 其他分享 >vue请求接口常用写法(axios)

vue请求接口常用写法(axios)

时间:2024-07-17 15:43:39浏览次数:16  
标签:axios const 请求 写法 request vue return data

1. 项目根目录下新建一个utils文件夹,并新建一个request.js文件(注意:是以axios方法请求的,所以需要先安装axios或cdn引入)

安装:

  • npm
npm install axios -S
  • yarn
yarn add axios -S
  • cdn
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

&&配置代码

import axios from 'axios'

const request = axios.create({
  // 接口的服务器基准路径
  baseURL: 'http://toutiao.itheima.net',

    // axios 默认会在内部这样来处理后端返回的数据
    // return JSON.parse(data)
  }]
})

// 请求拦截器
// Add a request interceptor
request.interceptors.request.use(function (config) {
  // 请求发起会经过这里
  // config:本次请求的请求配置对象
  const { user } = store.state
  if (user && user.token) {
    config.headers.Authorization = `Bearer ${user.token}`
  }

  // 注意:这里务必要返回 config 配置对象,否则请求就停在这里出不去了
  return config
}, function (error) {
  // 如果请求出错了(还没有发出去)会进入这里
  return Promise.reject(error)
})

// 响应拦截器

export default request

2.在项目根目录下新建一个api文件夹存放获取api的js文件,并在js文件中导入request.js

请求分类:

  • get:请求数据
  • post:提交数据
  • put:更新数据(所有的数据都推送到后端)
  • patch:更新数据(只推送更新的数据到后端)
  • delete:删除数据

&&示例代码

export const 自定义的名字 = data => {
  return request({
    method: '请求类型',
    url: 'api地址/${data}'
  })
}

参数区别:

  • GET请求时,使用params,参数会直接追加至请求字符串(url)后
export const 自定义的名字 = params => {
  return request({
    method: 'GET',
    url: 'api地址',
    params: {
			name: 'abc'
		}
  })
}

或者

export const 自定义的名字 = params => {
  return request({
    method: 'GET',
    url: 'api地址',
    params: params // 可直接简写为params
  })
}
  • POST请求时,使用data,参数是添加到请求体(body)的
export const 自定义的名字 = data => {
  return request({
    method: 'POST',
    url: 'api地址',
    data: {
			name: 'abc'
		}
  })
}

或者

export const 自定义的名字 = data => {
  return request({
    method: 'POST',
    url: 'api地址',
    data: data // 可直接简写为data
  })
}

3.请求的数据类型

常见的数据请求类型:

  • raw

可以上传任意格式的文本,文本不做任何修饰传到服务端。比如传一些xml,或者json数据,或者text文本数据。

  • x-www-form-urlencoded

只能上传键值对,而且键值对都是通过&间隔分开的。

  • form-data

可以上传文件或者键值对,最后都会转化为一条消息。
一般在进行接口传走前要自己处理,方法如下;

 async 处理函数名 (blob) {
      try {
        // 错误的用法
        // 如果接口要求 Content-Type 是 application/json
        // 则传递普通 JavaScript 对象
        // updateUserPhoto({
        //   photo: blob
        // })
        // 如果接口要求 Content-Type 是 multipart/form-data
        // 则你必须传递 FormData 对象
        const formData = new FormData()
        formData.append('接口参数名', blob)
        const { data } = await 处理函数名(formData)
         } catch (err) {
			// 。。。
      }
  • binary

只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件,不常用。

标签:axios,const,请求,写法,request,vue,return,data
From: https://www.cnblogs.com/qianyinqingfeng/p/18307542

相关文章

  • 基于Java+SpringBoot+Vue的学生评奖评优管理系统的设计与开发(源码+lw+部署文档+讲解
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • springboot+vue+mybatis物业管理系统+PPT+论文+讲解+售后
    首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本......
  • 关于在vue2中使用LogicFlow自定义节点
    主要参考LogicFlow官方文档在基础流程图搭建起来后,我们想要构建自己的需求风格,例如:那么该如何对节点进行自定义设定呢?文档当中有着详细的解释,本文以实际需求为例大体介绍:import{RectNode,RectNodeModel,h}from"@logicflow/core";classCustomNodeViewextendsR......
  • vue3 封装svg图标
    安装插件npmivite-plugin-svg-icons1.修改 vite.config.jsimport{resolve}from'path'import{createSvgIconsPlugin}from'vite-plugin-svg-icons';exportdefaultdefineConfig({  plugins:[    vue(),    createSvgIconsPlugin({......
  • Vue3 - 微信公众号H5网站使用微信扫一扫(微信扫码),苹果报错 {“errMsg“:“scanQRCode
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在vue3|nuxt3微信公众号网页开发中,微信移动端h5网页使用JS-SDK中的“微信扫码(微信扫一扫)”wx.scanQRCode接口,苹果ios系统真机测试时出现报错:“errMsg”:“scanQRCode:thepermissi......
  • API引用在Element UI (Vue 2)和Element Plus (Vue 3)中的不同
    API变动样式类名变化:一些组件的样式类名有所变动,可能需要更新你的自定义样式。事件名和属性名变化:某些组件的事件名和属性名发生了变化,需要检查ElementPlus文档以了解详细信息。使用setup函数:在Vue3中,可以使用CompositionAPI(如setup函数)来组织代码,而......
  • el-date-picker的value-forma在Element UI (Vue 2)和Element Plus (Vue 3)中的不同
     ElementUI(Vue2):<template><el-form-itemprop="register_date"label="成立日期"><el-date-pickerv-model="temp.register_date"type="date"value-format="yyyy-MM-dd"......
  • 基于ssm网上办公自动化vue管理系统(源码+LW+部署讲解)
    前言......
  • vue基础day01(MVVM、绑定、事件、结构模板)
    vue基础一、什么是vue构建用户界面的渐进式框架,采用自底向上逐层应用开发核心理念:数据驱动视图,组件化开发二、框架和库的区别框架:一套完整的解决方案,对项目的侵入性较大,项目如果需要更换框架,需要重新架构整个项目库:提供了一个小的功能,对项目的侵入性较小,如果某个库无......
  • 基于web的人力资源管理系统 毕业设计 springboot+Vue+mysql
    介绍在当今企业管理中,人力资源的有效管理对于组织的发展至关重要。为了提高人力资源管理的效率和准确性,我们开发了这个基于Web的人力资源管理系统。该系统旨在为企业提供一个全面、便捷、高效的人力资源管理平台,满足企业对人力资源规划、招聘、培训、绩效管理等方面的需求。......