vue axios同步请求解决方案,vue-axios使用

  vue axios同步请求解决方案,vue-axios使用

  很多时候,在构建应用程序时,您需要访问API并显示其数据。有几种方法可以做到这一点,使用基于promise的HTTP客户端axios是最流行的方法之一。本文主要介绍使用Axios通过Vue2发起请求的详细过程。有需要的可以参考一下。

  

目录

  序言Axios的安装和配置启动简单的GET请求启动POST请求启动简单的POST请求启动POST请求并携带参数(1)启动POST请求并携带参数(2)上传文件以测试Axios配置配置baseURLtimeoutwithCredentials摘要

  

前言

  当你读到这篇文章的时候,希望你已经知道什么是跨域请求,以及如何处理,这里就不赘述了。

  本文的后台是基于Springboot2.3搭建的,控制器中不会写任何业务逻辑,只是用来配合前端调试。

  控制器中使用的R.success是我自己封装的工具类,代码在文末。

  

Axios的安装和配置

  执行项目目录中的命令来安装axios。

  npm安装-S axios

  打开src路径中的main.js文件,将axios依赖项引入该文件,并将其挂载到vue全局属性中。

  //引用axios依赖项

  从“axios”导入axios

  //hang in vue,其中axios是按请求挂载的,可以使用this.request调用组件中的axios。

  vue . prototype . request=axios;

  get请求由axios中的GET方法调用,可以看到这个方法接收url和config对象。

  

发起简单GET请求

  @RestController

  @RequestMapping(/user )

  公共类UserController {

  @GetMapping(/list )

  公共R列表(){

  Return.success(用户列表查询成功!);

  }

  }

  模板

  div id=index

  Button @click=selectList 查询用户/按钮

  /div

  /模板

  脚本

  导出默认值{

  名称:“索引”,

  方法:{

  selectList() {

  //简单的GET请求只能通过传入URL来实现

  this . request . get( http://localhost:8000/user/list )。然后(res={

  console.log(res ,RES);

  }).catch(e={

  console.log(e ,e);

  })

  }

  }

  }

  /脚本

  款式/风格

  发起一个简单的GET请求并携带参数

  @RestController

  @RequestMapping(/user )

  公共类UserController {

  @GetMapping(/get )

  public R get(字符串id) {

  返回R.success(用户成功!);

  }

  }

  selectOne() {

  让配置={

  参数:{id: 1}

  }

  //url后面是config对象,config对象中的params属性对应请求参数。

  this . request . get( http://localhost:8000/user/get ,config)。然后(res={

  console.log(res ,RES);

  }).catch(e={

  console.log(e ,e);

  })

  },

  

发起POST请求

  post请求由axios中的POST方法调用,可以看到这个方法的参数列表有三个对象。

  

发起简单POST请求

  @RestController

  @RequestMapping(/user )

  公共类UserController {

  @PostMapping(/save )

  公共R save() {

  Return.success(用户添加成功!);

  }

  }

  save() {

  //发送简单的post请求和简单的get请求是一样的。您只需要将GET方法修改为POST方法。

  this . request . post( http://localhost:8000/user/save )。然后(res={

  console.log(res ,RES);

  }).catch(e={

  console.log(e ,e);

  })

  },

  

发起POST请求并携带参数(一)

  @RestController

  @RequestMapping(/user )

  公共类UserController {

  /**

  *通常,当发起POST请求时,参数被放在请求体中,然后由@RequestBody解析。

  *这里我不会创建实体类,直接用Map集合来接收。

  */

  @PostMapping(/save )

  public R save(@ request body MapString,String data) {

  Return.success(用户添加成功!)。setAttribute(name ,data.get(username ))。setAttribute(pwd ,data . get( password ));

  }

  }

  save() {

  let data={

  用户名:“Java小学生”,

  密码:“123456789”

  }

  //看到参数表应该能猜到。直接把对象放在第二个参数上就行了。

  //需要注意的是,该方法携带的参数放在请求体中

  this . request . post( http://localhost:8000/user/save ,data)。然后(res={

  console.log(res ,RES);

  }).catch(e={

  console.log(e ,e);

  })

  },

  

发起POST请求并携带参数(二)

  据说使用数据直接传递的参数放在请求体中,后端需要使用@RequestBody来获取。这里,参数被更改为提交的路径参数。

  @RestController

  @RequestMapping(/user )

  公共类UserController {

  @PostMapping(/save )

  public R save(字符串用户名,字符串密码){

  Return.success(用户添加成功!)。setAttribute(name ,用户名)。setAttribute(pwd ,密码);

  }

  }

  save() {

  让配置={

  参数:{

  用户名:“Java小学生”,

  密码:“123456789”

  }

  }

  //此处不使用数据,而是使用config传递参数,或者将对象封装为params进行传递。

  this . request . post( http://localhost:8000/user/save ,null,config)。然后(res={

  console.log(res ,RES);

  }).catch(e={

  console.log(e ,e);

  })

  },

  

上传文件测试

  除了GET和POST请求,还有PUT和DELETE请求,所以我在这里不一一测试。我们来学习一下上传文件。

  @RestController

  @RequestMapping(/user )

  公共类UserController {

  @ post mapping(/上传)

  公共R上传(多文件文件,字符串文件名){

  //file对象是接收到的文件,对文件的处理逻辑省略不写。

  Return.success(文件上传成功!)。setAttribute(fileName ,文件名);

  }

  模板

  div id=index

  !- input:file用于选择一个文件。选择一个文件后,change事件被触发来调用fileChange方法-

  输入类型= file id= file @ change= file change /

  !-执行上传文件的方法-

  按钮@click=上传点击上传/按钮

  /div

  /模板

  脚本

  导出默认值{

  名称:“索引”,

  data() {

  返回{

  文件:空

  }

  },

  方法:{

  文件更改(事件){

  //选择文件时会触发此方法,文件对象会存储在文件中。

  this . file=event . target . files[0];

  },

  上传(){

  //创建一个FormData对象,把文件放进去,也可以放一些其他的参数

  let data=new FormData();

  data.append(file ,this . file);

  data.append(文件名, 11223344 . txt );

  //创建一个config对象并将请求标头类型设置为multipart/form-data。

  让配置={

  标题:{ Content-Type : multipart/form-data }

  }

  //发起请求,携带刚刚创建的对象

  this . request . post( http://localhost:8000/user/upload ,data,config)。然后(res={

  console.log(res ,RES);

  })

  }

  }

  }

  /脚本

  

Axios的config配置

  通过观察可以发现,Axios的请求都接收一个config对象。您可以在文件node_modules/axios/index.d.ts中查看此配置的详细信息:

  配置很多,我是新人。我没碰过多少。这里我就简单测试几个其他的,随时检查。我推荐一个Axios中文网站。

  

baseURL

  Base是一个常用的属性,可以为每个请求设置根地址。我们只需要在发起请求时注意请求路径。

  脚本

  导出默认值{

  名称:“索引”,

  data() {

  返回{

  配置:{

  baseURL:“http://localhost:8000”

  }

  }

  },

  方法:{

  测试(){

  Let data={name: Java小学生 };

  this.request.post(/user/save ,data,this.config)。然后(res={

  console.log(res ,RES);

  });

  },

  }

  }

  /脚本

  

timeout

  超时也是一个常用的配置项,用于配置请求的超时。单位是ms,设置为0表示不设置超时。

  脚本

  导出默认值{

  名称:“索引”,

  data() {

  返回{

  配置:{

  baseURL:“http://localhost:8000”,

  超时:5000

  }

  }

  },

  方法:{

  测试(){

  Let data={name:张 };

  this.request.post(/user/save ,data,this.config)。然后(res={

  console.log(res ,RES);

  });

  },

  }

  }

  /脚本

  

withCredentials

  这个属性也是常用的。withCredentials的值为bool类型,用于设置是否允许cookies。Axios请求默认不允许携带cookies,可以通过控制器打印sessionID来测试。

  脚本

  导出默认值{

  名称:“索引”,

  data() {

  返回{

  配置:{

  baseURL:“http://localhost:8000”,

  //服务器需要配合。

  withCredentials: true,

  超时:5000

  }

  }

  },

  方法:{

  测试(){

  Let data={name: Java小学生 };

  this.request.post(/user/save ,data,this.config)。然后(res={

  console.log(res ,RES);

  });

  },

  }

  }

  /脚本

  Axios暂时写到这里。了解这些日常动态基本不是问题。熟悉config之后,可以尝试封装一个工具类。

  

总结

  关于Vue2对Axios的请求这篇文章就说到这里。有关Vue2对Axios的请求的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: