vue-axios使用,vue请求后端数据axios

  vue-axios使用,vue请求后端数据axios

  本文主要介绍了Vue中用axios调用后端接口的坑和解决方案,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

   axios调用后端接口的坑问题场景总结如下:调用后端接口使用Axios跨域问题在项目中查找vue.config.js。

  

axios调用后端接口的坑

  

问题场景

  Vue.js项目中使用axios调用后端接口(SpringBoot构建),后端接口无法获取数据。

  

总结了如下场景

  @RequestParam用于处理application/x-www-form-urlencoded编码(如果HTTP协议请求头中未指定Content-Type,则默认为application/x-www-form-urlencoded)。

  @RequestParam可以接受简单类型或对象类型的属性。本质上,Request.getParameter()中的键值对映射是由Spring的转换机制ConversionService配置的,转换成参数接受对象或字段。

  @RequestParam在GET请求中是QueryString的形式,POST请求中的BodyData的值会被Servlet接受并转换成Request.getParameter()参数集。

  @RequestParam在POST请求中将内容类型指定为application/JSON;当字符集=UTF-8时,出现400错误。

  @RequestParam不能接受带有@RequestParam JSONObject params的参数,否则将出现500错误。

  @RequestParam前端不能使用JSON.stringify()格式化参数,可以在axios中使用QS代替:QS.stringify()。

  @RequestBody用于处理HTTPEntity(HttpEntity,可以做成流或者字符串的形式)传递的数据。一般用于处理非应用/x-www-form-urlencoded编码。

  请求没有HTTPEntity,所以@RequestBody不适用,否则参数将会乱码,导致400错误。

  POST请求中使用@RequestBody时,参数通过HTTPEntity传递,HTTP请求头中的Content-Type必须设置为application/JSON;Chatset=UTF-8,否则会出现415错误。SpringMVC通过用HandlerAdapter配置HTTPMessageConverter来解析HTTPEntity中的数据,然后绑定到Bean。

  当在POST请求中使用@RequestBody时,前端必须使用JSON.stringify()格式化为JSON字符串数据。

  注释支持的类型支持的请求类型支持的内容类型请求标头类型@ pathfvariableurltag @ requestparamrultag @ requestparamdbodyapplication/form-data,application/x-form-www-urlencoded @ requestbodybodyapplication/JSON

  

调用后端接口 使用axios跨域问题

  

找到项目中vue.config.js

  修改devserver

  Devserver /api/app等于//https://www.lifewhw.top/app,

  在devserver下配置ip端口没有问题。如果换域名提供商时存在Access-Control-Allow-Origin的跨域问题。

  转到后端请求头设置access-control-allow-origin: *

  亲测有效!

  1.如果调用一次axios 发送了两条get 请求 并且 其中一条状态码为301 说明是重定向 浏览器帮你从新发送了请求(原因是你前端路由配置的和后端不同,我是因为少配置了/出现发送两次get请求 其中一次为301)

  2.还有一种情况,就是两个请求。第一个请求头是options,是百度自己大力推的。

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

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

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