axios qs

2024-04-28 10:59
文章标签 axios qs

本文主要是介绍axios qs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

终于明白了vue使用axios发送post请求时的坑及解决原理

前言:在做项目的时候正好同事碰到了这个问题,问为什么用axios在发送请求的时候没有成功,请求不到数据,反而是报错了,下图就是报错请求本尊

vue里代码如下:

   this.$http.post('/getMatterList.do',{"matterIds":"1,2,3"}).then((res)=>{console.log(res);})

乍一看,没毛病啊,请求不就是这么发的吗,axios官方文档都这么示范的呢,还能有错?我们再来仔细看下浏览器里发出去的请求

有没有发现什么蹊跷,传送参数的形式不是我们熟悉的form-data,而是Request Payload。莫慌,其实我们只要做两步设置就可以解决了

  • 用Qs.stringify()将对象序列化成URL的形式,Qs是axios里面自带的,所以直接引入就可以了
  • 设置请求头里的'Content-Type'为'application/x-www-form-urlencoded'
   import Qs from 'qs'var data = Qs.stringify({"matterIds":"1,2,3"});this.$http.post('/getMatterList.do',data, {headers:{'Content-Type':'application/x-www-form-urlencoded'}}).then((res)=>{console.log(res)})

改完之后再来看下,妥妥的了

问题是解决了,但是为什么呢?查阅一番资料之后,我又回来啦

HTTP请求中的get请求和post请求参数的存放位置是不一样的,get请求的参数以键值对的方式跟在url后面的,而post请求的参数是以键值对的方式在请求体里的

  • get请求

  • post请求

为何要设置请求头里的'Content-Type':

我们使用不同请求方式时,参数的传输方式是不一样的,但是服务端在取我们接口的请求参数时,用的方法其实却是一样的,都是使用request.getParameter(key)来获取,其实是因为tomcat在中间会对请求参数进行解析处理,处理完把解析出来的表单参数放在request parameter map中,所以后端就可以通过request.getParameter(key)来统一获取数据,而tomcat解析的时候是怎么知道当前的请求是post请求的呢,就是通过'contentType',当'contentType'为"application/x-www-form-urlencoded",它才会去读取请求体数据。

为何要用Qs.stringify()将对象序列化成URL的形式:

在最开始的时候我们说了,post请求参数是以键值对的形式存在请求体里,用Qs.stringify()就是把传入的对象转换为键值对。

最后在vue里用axios的时候,针对post请求的问题可以做一个全局的设置,避免每个请求都要设置一遍太麻烦

这篇关于axios qs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943060

相关文章

Vue的axios处理跨域问题

// axios 配置 axios.defaults.withCredentials = true; //设置ciookes

Vue跨域问题、Vue配置开发环境代理服务、集成Axios发送Ajax请求、集成vue-resource发送Ajax请求

目录 1. Ajax请求服务介绍2. axios的安装3. Vue跨域问题介绍和解决方案4. 使用vue-cli配置开发环境代理服务4.1 简单配置4.2 复杂配置4.3 二次封装 5. 集成vue-resource发送Ajax请求 1. Ajax请求服务介绍 xhr: new XHLHttpRequest().open()/send()。偏向底层JQuery: 对xhr进行了封

Javaweb学习之Vue_Axios网络请求(七)

认识Axios Axios 是一个流行的 JavaScript 库,用于简化 HTTP 请求的发送和处理。它基于 Promise 的概念,使得 HTTP 请求和响应处理更加直观和易于管理。Axios 可以在浏览器和 Node.js 环境中使用,主要用于从客户端向服务器发送请求并接收响应。 主要特点 基于 Promise:Axios 返回的请求和响应都是 Promise 对象,使得异步操作更

2024年最新版Ajax+Axios 学习【包含原理、Promise、报文、接口等...】

基础知识 AJAX概念 AJAX概念:是浏览器与服务器进行数据通信的技术。 认识URL 定义:统一资源定位符,简称网址,用于访问网络上的资源。 组成: http协议:超文本传输协议,规定浏览器和服务器之间传输数据的格式。域名:标记服务器在互联网中方位。资源位置:标记资源在服务器下的具体位置。 查询参数 定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据。 语法:

vue axios发送post请求跨域解决

跨越解决有两种方案,后端解决,前端解决。后端解决参考Django跨域解决-CSDN博客 该方法之前试着可以的,但是复制到其他电脑上报错,所以改用前端解决 1、main.js做增加如下配置 import axios from 'axios'Vue.prototype.$axios = axiosaxios.defaults.baseURL = '/api/' //关键代码axios.d

解决:axios 请求头url传参数组时发生400错误

一、前言 axios封装的网络请求,url传参时,数组作为参数传递,发生400错误请求时数组参数转url会保留 [] 二、原因 RFC3986:除了 数字 + 字母 + -_.~ 不会被转义,其他字符都会被以百分号(%)后跟两位十六进制数 %{hex} 的方式进行转义 url 编码标准 RFC3986 是保留方括号的可能 axios 非最新版本也是一个原因,当前使用的"axios

【HarmonyOS 4.0】网络请求 - axios

axios 相当于鸿蒙应用项目的一个第三方库,鸿蒙应用项目使用ohpm管理(包括安装,卸载等)第三方库。除了axios,还有很多其他的第三方库可供开发者使用,所有的第三方库都收录在OpenHarmony三方库中心仓。 1. 安装 axios 库 1.1 查看 ohpm 安装目录 1.2 把 ohpm 安装目录添加到电脑Path环境变量中 1.3 安装 axios:ohpm i @ohos

vue2.0中axios请求配置

vue2.0中axios请求配置 一、vue2.0项目中1.配置2.使用 二、vue2.0+ts项目中如何配置1.配置2.使用 一、vue2.0项目中 1.配置 // axios.jsimport axios from 'axios';import { Message } from 'element-ui';import router from '../../route

axios教程01-基本使用流程

axios官网文档:http://www.axios-js.com/ jQuery与axios对比jQueryaxios1.ajax技术底层原理XMLHTTPRequestXMLHTTPRequest2.体积大小大(包含大量dom操作与ajax)小(只有ajax请求)3.是否支持ES6的Promise不支持(底层使用其他方案模拟实现)支持基于原生Promise封装4.兼容性好 (兼容性是jQue

day39-测试平台搭建之前端vue学习-axios

一、json-server的使用         1.1.安装                 npm install-g json-server         1.2.运行                 json-server--watchdb.json 二、使用         2.1.axios是什么?                 1).前端最流行的ajax请求库