使用axios请求接口,几种content-type的区别详解


Posted in Javascript onOctober 29, 2019

axios的使用

安装(一般使用框架的话, 脚手架都集成了)

$ npm install axios

请求示例

// POST
axios.post('/user', {
 firstName: 'Fred',
 lastName: 'Flintstone'
 })
 .then(function (response) {
 console.log(response);
 })
 .catch(function (error) {
 console.log(error);
 });
// GET
axios.get('/user', {
 params: {
  ID: 12345
 }
 })
 .then(function (response) {
 console.log(response);
 })
 .catch(function (error) {
 console.log(error);
 });
// 执行多个并发
axios.all([get1(), get2()])
 .then(axios.spread(function (acct, perms) {
 // 两个请求现在都执行完成
 }));

可以通过向 axios 传递相关配置来创建请求

语法: axios(config)

axios({
 method: 'post',
 url: '/user/12345',
 data: {
 firstName: 'Fred',
 lastName: 'Flintstone'
 }
});

这里, 我就拿以POST的方式传递相关配置来说事, 因为笔者在这里躺了两次坑, 很有必要记录一下, 哈哈.

默认情况下, 不写content-type, 是以json的方式来传递, (Content-Type: application/json;charset=UTF-8)

axios({
 url:'/api/connect/token',
 method: 'post',
 data: {
   firstName: 'Fred',
   lastName: 'Flintstone'
  }
 }).then(res => {
  console.log(1234, res.data)
 }).catch(error => {
  console.log(error)
 })

Headers如下:

Request Payload
{ firstName: "Fred", lastName: "Flintstone"}

content-type改成x-www-form-urlencoded, 即表单提交方式

axios({
 url:'/api/connect/token',
 method: 'post',
 data: {
   firstName: 'Fred',
   lastName: 'Flintstone'
  },
 headers: {
   'Content-type': 'application/x-www-form-urlencoded'
  }
 }).then(res => {
  console.log(1234, res.data)
 }).catch(error => {
  console.log(error)
 })

Headers如下:

Form Data
{"firstName":"Fred","lastName":"Flintstone"}:

另一种情况, 序列化成字符串形式传递

axios({
 url:'/api/connect/token',
 method: 'post',
 data: JSON.stringify({
   firstName: 'Fred',
   lastName: 'Flintstone'
  })
 }).then(res => {
  console.log(1234, res.data)
 }).catch(error => {
  console.log(error)
 })

结果跟上面一致:

Form Data
{"firstName":"Fred","lastName":"Flintstone"}:

还有一种常见情况, 通过qs库对数据进行编码(前提要安装qs)

import qs from 'qs'
axios({
 url:'/api/connect/token',
 method: 'post',
 data: qs.stringify({
   firstName: 'Fred',
   lastName: 'Flintstone'
  })
 }).then(res => {
  console.log(1234, res.data)
 }).catch(error => {
  console.log(error)
 })

结果:

Request Headers
Content-Type: application/x-www-form-urlencoded
Form Data
firstName: Fred
lastName: Flintstone

使用qs要注意的点 :

allowDots(多层对象嵌套, 可用.标记)

qs.stringify({ 
 a: { 
  b: { 
   c: 'd', e: 'f' 
  } 
 } 
}, { allowDots: true });
// 'a.b.c=d&a.b.e=f'

以上这篇使用axios请求接口,几种content-type的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery Firefox3.5中操作select的问题
Jul 10 Javascript
浅析JavaScript中的常用算法与函数
Nov 21 Javascript
使用jquery实现放大镜效果
Sep 02 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
Feb 15 Javascript
分享一个插件实现水珠自动下落效果
Jun 01 Javascript
快速解决js中window.location.href不工作的问题
Nov 02 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 Javascript
vue内置组件transition简单原理图文详解(小结)
Jul 12 Javascript
vue2.0结合Element-ui实战案例
Mar 06 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
Apr 17 Javascript
Angular短信模板校验代码
Sep 23 Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 31 Javascript
vue+elementui 对话框取消 表单验证重置示例
Oct 29 #Javascript
vue实现路由监听和参数监听
Oct 29 #Javascript
基于axios 的responseType类型的设置方法
Oct 29 #Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 #Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 #Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 #Javascript
javascript实现简单打字游戏
Oct 29 #Javascript
You might like
一个很不错的PHP翻页类
2009/06/01 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
Python中使用ElementTree解析XML示例
2015/06/02 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python安装whl文件过程图解
2020/02/18 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
python 实现IP子网计算
2021/02/18 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
酒店行政人事部经理职务说明书
2014/02/26 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
借款协议书
2014/09/16 职场文书