使用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面向对象编程
Mar 02 Javascript
flash 得到自身url参数的代码
Nov 15 Javascript
鼠标事件延时切换插件
Mar 12 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
Mar 31 Javascript
JavaScript6 let 新语法优势介绍
Jul 15 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
Aug 31 Javascript
Bootstrap基本组件学习笔记之进度条(15)
Dec 08 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
详细分析JS函数去抖和节流
Dec 05 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
使用vue-router在Vue页面之间传递数据的方法
Jul 15 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
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/12/14 PHP
php str_pad 函数使用详解
2009/01/13 PHP
10个实用的PHP代码片段
2011/09/02 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
Python sep参数使用方法详解
2020/02/12 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
员工培训心得体会
2013/12/30 职场文书
迟到检讨书900字
2014/01/14 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
关于使用Redisson订阅数问题
2022/01/18 Redis