使用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学习阶段性总结(2)--(X)HTML学习
Feb 03 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
Javascript 实现全屏滚动实例代码
Dec 31 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
Feb 15 Javascript
vue.js实现条件渲染的实例代码
Jun 22 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
Jun 25 Javascript
Vue+element-ui 实现表格的分页功能示例
Aug 18 Javascript
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
Javascript 类型转换、封闭函数及常见内置对象操作示例
Nov 15 Javascript
JS实现横向轮播图(初级版)
Jun 24 Javascript
JS async 函数的含义和用法实例总结
Apr 08 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 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新手上路(十一)
2006/10/09 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
python每次处理固定个数的字符的方法总结
2013/01/29 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
Django框架模板介绍
2019/01/15 Python
Python读取指定日期邮件的实例
2019/02/01 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
检讨书模板
2015/01/29 职场文书
体育教师个人工作总结
2015/02/09 职场文书
幼儿园安全管理制度
2015/08/05 职场文书