博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(生产)axios - 请求接口
阅读量:6307 次
发布时间:2019-06-22

本文共 2643 字,大约阅读时间需要 8 分钟。

参考:https://www.awesomes.cn/repo/mzabriskie/axios

axios 介绍

基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用

  • 功能特性

在浏览器中发送 XMLHttpRequests 请求

在 node.js 中发送 http请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
自动转换 JSON 数据
客户端支持保护安全免受 XSRF 攻击

 

GET请求

//通过给定的ID来发送请求

axios.get('/user?ID=12345').then(function(response){
  console.log(response);
}).catch(function(err){
  console.log(err);
});
//以上请求也可以通过这种方式来发送
axios.get('/user',{
  params:{ID:12345}
}).then(function(response){
  console.log(response);
}).catch(function(err){
  console.log(err);
});

 

POST请求

axios.post('/user',{

  firstName:'Fred',
  lastName:'Flintstone'
}).then(function(res){
  console.log(res);
}).catch(function(err){
  console.log(err);
});

 

一次性并发多个请求

function getUserAccount(){

  return axios.get('/user/12345');
}
function getUserPermissions(){
  return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(),getUserPermissions()]).then(axios.spread(function(acct,perms){
  //当这两个请求都完成的时候会触发这个函数,两个参数分别代表返回的结果
}))

 

axios可以通过配置(config)来发送请求

//发送一个`POST`请求

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

 

//发送一个`GET`请求(默认的请求方式)

axios('/user/12345')

 

请求的配置(request config)

以下就是请求的配置选项,只有url选项是必须的,如果method选项未定义,那么它默认是以GET的方式发出请求

{

url:'/user',

//default 请求资源的方式

method:'get'

// 如果`url`不是绝对地址,那么`baseURL`将会加到`url`的前面

baseURL:'https://some-domain.com/api/',

//`transformRequest 请求发送到服务器之前对请求的数据做出一些改动, 适用于以下请求方式:`put/post/patch`,必须返回一个字符串、-一个`ArrayBuffer`或者`Stream`
transformRequest:[function(data){
  return data;
}],

//`transformResponse`选项允许我们在数据传送到`then/catch`方法之前对数据进行改动
transformResponse:[function(data){
  return data;
}],

//`headers`选项是需要被发送的自定义请求头信息

headers: {'X-Requested-With':'XMLHttpRequest'},

//`params`选项是要随请求一起发送的请求参数----一般链接在URL后面

params: {
  ID:12345
},

//`paramsSerializer`是一个可选的函数,起作用是让参数(params)序列化

paramsSerializer: function(params){
  return Qs.stringify(params,{arrayFormat:'brackets'})
},

//`data`选项是作为一个请求体而需要被发送的数据,该选项只适用于方法:`put/post/patch`

data {
  firstName:"Fred"
},

//`timeout`选项定义了请求发出的延迟毫秒数

timeout:1000,

//`withCredentails`选项表明了是否是跨域请求

withCredentials:false,//default

//返回数据的格式
responseType:'json',//default

//`httpAgent/httpsAgent`定义了当发送http/https请求要用到的自定义代理,/keeyAlive在选项中没有被默认激活
httpAgent: new http.Agent({keeyAlive:true}),
httpsAgent: new https.Agent({keeyAlive:true}),

//proxy定义了主机名字和端口号,
proxy: {
  host:'127.0.0.1',
  port: 9000,
  auth: {
    username:'skda',
    password:'radsd'
  }
}

}

 

请求返回的内容

{

  data:{},
  status:200,
  //从服务器返回的http状态文本
  statusText:'OK',
  //响应头信息
  headers: {},
  //`config`是在请求的时候的一些配置信息
  config: {}
}

 

转载于:https://www.cnblogs.com/vs1435/p/7019230.html

你可能感兴趣的文章
城市 | 800个地铁站数据透析的京沪白领图鉴:隐形土豪、无产中产阶级和猪猪女孩...
查看>>
前端脚本!网站图片素材中文转英文
查看>>
linux的常用易忘命令
查看>>
PHP 分割字符串
查看>>
java 基于QRCode、zxing 的二维码生成与解析
查看>>
关于职业规划的一些思考
查看>>
img垂直水平居中与div
查看>>
Fabrik – 在浏览器中协作构建,可视化,设计神经网络
查看>>
防恶意注册的思考
查看>>
http2-head compression
查看>>
C# 命名空间
查看>>
订餐系统之同步美团商家订单
查看>>
使用ArrayList时设置初始容量的重要性
查看>>
Java Web-----JSP与Servlet(一)
查看>>
Maven搭建SpringMVC+Mybatis项目详解
查看>>
关于量子理论:最初无意的简化,和一些人有意的强化和放大
查看>>
CentOS 6.9通过RPM安装EPEL源(http://dl.fedoraproject.org)
查看>>
“区块链”并没有什么特别之处
查看>>
没有功能需求设计文档?对不起,拒绝开发!
查看>>
4星|《先发影响力》:影响与反影响相关的有趣的心理学研究综述
查看>>