使用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 相关文章推荐
javascript编程起步(第七课)
Jan 10 Javascript
jquery 弹出层实现代码
Oct 30 Javascript
iframe子父页面调用js函数示例
Nov 07 Javascript
javascript页面上使用动态时间具体实现
Mar 18 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
AngularJS的Filter的示例详解
Mar 07 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
Mar 08 Javascript
Javascript中的async awai的用法
May 17 Javascript
Vue组件化开发思考
Feb 02 Javascript
react 应用多入口配置及实践总结
Oct 17 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
第九节--绑定
2006/11/16 PHP
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
优化javascript的执行速度
2010/01/23 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Swift中的协议(protocol)学习教程
2016/07/08 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
python与idea的集成的实现
2020/11/20 Python
为什么UNION ALL比UNION快
2016/03/17 面试题
木马的传播途径主要有哪些
2016/04/08 面试题
中药专业毕业自荐书范文
2014/02/08 职场文书
狮子林导游词
2015/02/03 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers