API优先的身份验证、授权和欺诈预防 网站|文档| Node.js | 我们致力于一个共同的目标:为您提供所需的金融工具、资源和信息... www.principal.com | 大家好,我们是德斯科!我们正在为应用程序开发人员在身份验证领域构建一些东西...... 网站|文档|社区 |
在 Buzzoid,您只需点击几下即可快速、安全、轻松地购买 Instagram 粉丝。速度... 嗡嗡声网 | 在 Famety,您只需点击几下即可快速、安全、轻松地增加您的社交媒体关注者... www.famety.com | 购买 Instagram 点赞 poprey.com |
?成为赞助商 | ?成为赞助商 | ?成为赞助商 |
适用于浏览器和 Node.js 的基于 Promise 的 HTTP 客户端
网站•文档
multipart/form-data
和x-www-form-urlencoded
正文编码最新✔ | 最新✔ | 最新✔ | 最新✔ | 最新✔ |
使用 npm:
$ npm install axios
使用凉亭:
$ bower install axios
使用纱线:
$ yarn add axios
使用 pnpm:
$ pnpm add axios
安装包后,您可以使用import
或require
方法导入库:
import axios , { isCancel , AxiosError } from 'axios' ;
您还可以使用默认导出,因为命名导出只是从 Axios 工厂重新导出:
import axios from 'axios' ;
console . log ( axios . isCancel ( 'something' ) ) ;
如果您使用require
进行导入,则只能使用默认导出:
const axios = require ( 'axios' ) ;
console . log ( axios . isCancel ( 'something' ) ) ;
对于某些捆绑程序和某些 ES6 linter,您可能需要执行以下操作:
import { default as axios } from 'axios' ;
如果尝试将模块导入自定义或遗留环境时出现问题,您可以尝试直接导入模块包:
const axios = require ( 'axios/dist/browser/axios.cjs' ) ; // browser commonJS bundle (ES2017)
// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017)
使用jsDelivr CDN(ES5 UMD浏览器模块):
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js " > </ script >
使用 unpkg CDN:
< script src =" https://unpkg.com/[email protected]/dist/axios.min.js " > </ script >
注意:CommonJS 用法
为了在使用带有require()
CommonJS 导入时获得 TypeScript 类型(用于智能感知/自动完成),请使用以下方法:
import axios from 'axios' ;
//const axios = require('axios'); // legacy way
// Make a request for a user with a given ID
axios . get ( '/user?ID=12345' )
. then ( function ( response ) {
// handle success
console . log ( response ) ;
} )
. catch ( function ( error ) {
// handle error
console . log ( error ) ;
} )
. finally ( function ( ) {
// always executed
} ) ;
// Optionally the request above could also be done as
axios . get ( '/user' , {
params : {
ID : 12345
}
} )
. then ( function ( response ) {
console . log ( response ) ;
} )
. catch ( function ( error ) {
console . log ( error ) ;
} )
. finally ( function ( ) {
// always executed
} ) ;
// Want to use async/await? Add the `async` keyword to your outer function/method.
async function getUser ( ) {
try {
const response = await axios . get ( '/user?ID=12345' ) ;
console . log ( response ) ;
} catch ( error ) {
console . error ( error ) ;
}
}
注意:
async/await
是 ECMAScript 2017 的一部分,Internet Explorer 和旧版浏览器不支持,因此请谨慎使用。
执行POST
请求
axios . post ( '/user' , {
firstName : 'Fred' ,
lastName : 'Flintstone'
} )
. then ( function ( response ) {
console . log ( response ) ;
} )
. catch ( function ( error ) {
console . log ( error ) ;
} ) ;
执行多个并发请求
function getUserAccount ( ) {
return axios . get ( '/user/12345' ) ;
}
function getUserPermissions ( ) {
return axios . get ( '/user/12345/permissions' ) ;
}
Promise . all ( [ getUserAccount ( ) , getUserPermissions ( ) ] )
. then ( function ( results ) {
const acct = results [ 0 ] ;
const perm = results [ 1 ] ;
} ) ;
可以通过将相关配置传递给axios
来发出请求。
// Send a POST request
axios ( {
method : 'post' ,
url : '/user/12345' ,
data : {
firstName : 'Fred' ,
lastName : 'Flintstone'
}
} ) ;
// GET request for remote image in node.js
axios ( {
method : 'get' ,
url : 'https://bit.ly/2mTM3nY' ,
responseType : 'stream'
} )
. then ( function ( response ) {
response . data . pipe ( fs . createWriteStream ( 'ada_lovelace.jpg' ) )
} ) ;
// Send a GET request (default method)
axios ( '/user/12345' ) ;
为了方便起见,我们为所有常见的请求方法提供了别名。
使用别名方法时,不需要在 config.xml 中指定url
、 method
和data
属性。
请使用Promise.all
替换以下函数。
用于处理并发请求的辅助函数。
axios.all(可迭代) axios.spread(回调)
您可以使用自定义配置创建 axios 的新实例。
const instance = axios . create ( {
baseURL : 'https://some-domain.com/api/' ,
timeout : 1000 ,
headers : { 'X-Custom-Header' : 'foobar' }
} ) ;
下面列出了可用的实例方法。指定的配置将与实例配置合并。
这些是用于发出请求的可用配置选项。只需要url
。如果未指定method
,请求将默认为GET
。
{
// `url` is the server URL that will be used for the request
url : '/user' ,
// `method` is the request method to be used when making the request
method : 'get' , // default
// `baseURL` will be prepended to `url` unless `url` is absolute.
// It can be convenient to set `baseURL` for an instance of axios to pass relative URLs
// to methods of that instance.
baseURL : 'https://some-domain.com/api/' ,
// `transformRequest` allows changes to the request data before it is sent to the server
// This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE'
// The last function in the array must return a string or an instance of Buffer, ArrayBuffer,
// FormData or Stream
// You may modify the headers object.
transformRequest : [ function ( data , headers ) {
// Do whatever you want to transform the data
return data ;
} ] ,
// `transformResponse` allows changes to the response data to be made before
// it is passed to then/catch
transformResponse : [ function ( data ) {
// Do whatever you want to transform the data
return data ;
} ] ,
// `headers` are custom headers to be sent
headers : { 'X-Requested-With' : 'XMLHttpRequest' } ,
// `params` are the URL parameters to be sent with the request
// Must be a plain object or a URLSearchParams object
params : {
ID : 12345
} ,
// `paramsSerializer` is an optional config that allows you to customize serializing `params`.
paramsSerializer : {
//Custom encoder function which sends key/value pairs in an iterative fashion.
encode ?: ( param : string ) : string => { /* Do custom operations here and return transformed string */ } ,
// Custom serializer function for the entire parameter. Allows user to mimic pre 1.x behaviour.
serialize ?: ( params : Record < string , any > , options ?: ParamsSerializerOptions ) ,
//Configuration for formatting array indexes in the params.
indexes : false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes).
} ,
// `data` is the data to be sent as the request body
// Only applicable for request methods 'PUT', 'POST', 'DELETE , and 'PATCH'
// When no `transformRequest` is set, must be of one of the following types:
// - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
// - Browser only: FormData, File, Blob
// - Node only: Stream, Buffer, FormData (form-data package)
data : {
firstName : 'Fred'
} ,
// syntax alternative to send data into the body
// method post
// only the value is sent, not the key
data : 'Country=Brasil&City=Belo Horizonte' ,
// `timeout` specifies the number of milliseconds before the request times out.
// If the request takes longer than `timeout`, the request will be aborted.
timeout : 1000 , // default is `0` (no timeout)
// `withCredentials` indicates whether or not cross-site Access-Control requests
// should be made using credentials
withCredentials : false , // default
// `adapter` allows custom handling of requests which makes testing easier.
// Return a promise and supply a valid response (see lib/adapters/README.md)
adapter : function ( config ) {
/* ... */
} ,
// Also, you can set the name of the built-in adapter, or provide an array with their names
// to choose the first available in the environment
adapter : 'xhr' // 'fetch' | 'http' | ['xhr', 'http', 'fetch']
// `auth` indicates that HTTP Basic auth should be used, and supplies credentials.
// This will set an `Authorization` header, overwriting any existing
// `Authorization` custom headers you have set using `headers`.
// Please note that only HTTP Basic auth is configurable through this parameter.
// For Bearer tokens and such, use `Authorization` custom headers instead.
auth : {
username : ' janedoe ' ,
password : 's00pers3cret'
} ,
// `responseType` indicates the type of data that the server will respond with
// options are: 'arraybuffer', 'document', 'json', 'text', 'stream'
// browser only: 'blob'
responseType : 'json' , // default
// `responseEncoding` indicates encoding to use for decoding responses (Node.js only)
// Note: Ignored for `responseType` of 'stream' or client-side requests
// options are: 'ascii', 'ASCII', 'ansi', 'ANSI', 'binary', 'BINARY', 'base64', 'BASE64', 'base64url',
// 'BASE64URL', 'hex', 'HEX', 'latin1', 'LATIN1', 'ucs-2', 'UCS-2', 'ucs2', 'UCS2', 'utf-8', 'UTF-8',
// 'utf8', 'UTF8', 'utf16le', 'UTF16LE'
responseEncoding : 'utf8' , // default
// `xsrfCookieName` is the name of the cookie to use as a value for xsrf token
xsrfCookieName : 'XSRF-TOKEN' , // default
// `xsrfHeaderName` is the name of the http header that carries the xsrf token value
xsrfHeaderName : 'X-XSRF-TOKEN' , // default
// `undefined` (default) - set XSRF header only for the same origin requests
withXSRFToken : boolean | undefined | ( ( config : InternalAxiosRequestConfig ) => boolean | undefined ) ,
// `onUploadProgress` allows handling of progress events for uploads
// browser & node.js
onUploadProgress : function ( { loaded , total , progress , bytes , estimated , rate , upload = true } ) {
// Do whatever you want with the Axios progress event
} ,
// `onDownloadProgress` allows handling of progress events for downloads
// browser & node.js
onDownloadProgress : function ( { loaded , total , progress , bytes , estimated , rate , download = true } ) {
// Do whatever you want with the Axios progress event
} ,
// `maxContentLength` defines the max size of the http response content in bytes allowed in node.js
maxContentLength : 2000 ,
// `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed
maxBodyLength : 2000 ,
// `validateStatus` defines whether to resolve or reject the promise for a given
// HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
// or `undefined`), the promise will be resolved; otherwise, the promise will be
// rejected.
validateStatus : function ( status ) {
return status >= 200 && status < 300 ; // default
} ,
// `maxRedirects` defines the maximum number of redirects to follow in node.js.
// If set to 0, no redirects will be followed.
maxRedirects : 21 , // default
// `beforeRedirect` defines a function that will be called before redirect.
// Use this to adjust the request options upon redirecting,
// to inspect the latest response headers,
// or to cancel the request by throwing an error
// If maxRedirects is set to 0, `beforeRedirect` is not used.
beforeRedirect : ( options , { headers } ) = > {
if ( options . hostname === "example.com" ) {
options . auth = "user:password" ;
}
} ,
// `socketPath` defines a UNIX Socket to be used in node.js.
// e.g. '/var/run/docker.sock' to send requests to the docker daemon.
// Only either `socketPath` or `proxy` can be specified.
// If both are specified, `socketPath` is used.
socketPath: null , // default
// `transport` determines the transport method that will be used to make the request. If defined, it will be used. Otherwise, if `maxRedirects` is 0, the default `http` or `https` library will be used, depending on the protocol specified in `protocol`. Otherwise, the `httpFollow` or `httpsFollow` library will be used, again depending on the protocol, which can handle redirects.
transport : undefined , // default
// `httpAgent` and `httpsAgent` define a custom agent to be used when performing http
// and https requests, respectively, in node.js. This allows options to be added like
// `keepAlive` that are not enabled by default.
httpAgent : new http . Agent ( { keepAlive : true } ) ,
httpsAgent : new https . Agent ( { keepAlive : true } ) ,
// `proxy` defines the hostname, port, and protocol of the proxy server.
// You can also define your proxy using the conventional `http_proxy` and
// `https_proxy` environment variables. If you are using environment variables
// for your proxy configuration, you can also define a `no_proxy` environment
// variable as a comma-separated list of domains that should not be proxied.
// Use `false` to disable proxies, ignoring environment variables.
// `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and
// supplies credentials.
// This will set an `Proxy-Authorization` header, overwriting any existing
// `Proxy-Authorization` custom headers you have set using `headers`.
// If the proxy server uses HTTPS, then you must set the protocol to `https`.
proxy : {
protocol : 'https' ,
host : '127.0.0.1' ,
// hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined
port : 9000 ,
auth : {
username : 'mikeymike' ,
password : 'rapunz3l'
}
} ,
// `cancelToken` specifies a cancel token that can be used to cancel the request
// (see Cancellation section below for details)
cancelToken : new CancelToken ( function ( cancel ) {
} ) ,
// an alternative way to cancel Axios requests using AbortController
signal : new AbortController ( ) . signal ,
// `decompress` indicates whether or not the response body should be decompressed
// automatically. If set to `true` will also remove the 'content-encoding' header
// from the responses objects of all decompressed responses
// - Node only (XHR cannot turn off decompression)
decompress : true , // default
// `insecureHTTPParser` boolean.
// Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers.
// This may allow interoperability with non-conformant HTTP implementations.
// Using the insecure parser should be avoided.
// see options https://nodejs.org/dist/latest-v12.x/docs/ap