Autenticação, autorização e prevenção de fraudes baseadas em API Site | Documentação | Node.js | Estamos vinculados por um propósito comum: fornecer a você as ferramentas financeiras, os recursos e as informações que você precisa... www.principal.com | Olá, somos a Descope! Estamos construindo algo no espaço de autenticação para desenvolvedores de aplicativos e... Site | Documentação | Comunidade |
No Buzzoid, você pode comprar seguidores no Instagram de forma rápida, segura e fácil com apenas alguns cliques. Avaliar... buzzoid.com | Na Famety, você pode aumentar o número de seguidores nas redes sociais de forma rápida, segura e fácil com apenas alguns cliques... www.famety.com | Compre curtidas no Instagram poprey. com |
? Torne-se um patrocinador | ? Torne-se um patrocinador | ? Torne-se um patrocinador |
Cliente HTTP baseado em promessa para o navegador e node.js
Site • Documentação
multipart/form-data
e x-www-form-urlencoded
Últimas ✔ | Últimas ✔ | Últimas ✔ | Últimas ✔ | Últimas ✔ |
Usando npm:
$ npm install axios
Usando caramanchão:
$ bower install axios
Usando fio:
$ yarn add axios
Usando pnpm:
$ pnpm add axios
Depois que o pacote estiver instalado, você poderá importar a biblioteca usando a abordagem import
ou require
:
import axios , { isCancel , AxiosError } from 'axios' ;
Você também pode usar a exportação padrão, já que a exportação nomeada é apenas uma reexportação da fábrica do Axios:
import axios from 'axios' ;
console . log ( axios . isCancel ( 'something' ) ) ;
Se você usar require
para importação, somente a exportação padrão estará disponível :
const axios = require ( 'axios' ) ;
console . log ( axios . isCancel ( 'something' ) ) ;
Para alguns bundlers e alguns linters ES6, pode ser necessário fazer o seguinte:
import { default as axios } from 'axios' ;
Para casos em que algo deu errado ao tentar importar um módulo para um ambiente personalizado ou legado, você pode tentar importar o pacote do módulo diretamente:
const axios = require ( 'axios/dist/browser/axios.cjs' ) ; // browser commonJS bundle (ES2017)
// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017)
Usando jsDelivr CDN (módulo de navegador ES5 UMD):
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js " > </ script >
Usando desempacotar CDN:
< script src =" https://unpkg.com/[email protected]/dist/axios.min.js " > </ script >
Nota : uso de CommonJS
Para obter as tipificações TypeScript (para intellisense/autocomplete) ao usar importações CommonJS comrequire()
, use a seguinte abordagem:
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 ) ;
}
}
Nota :
async/await
faz parte do ECMAScript 2017 e não é compatível com Internet Explorer e navegadores mais antigos, portanto, use com cuidado.
Executando uma solicitação POST
axios . post ( '/user' , {
firstName : 'Fred' ,
lastName : 'Flintstone'
} )
. then ( function ( response ) {
console . log ( response ) ;
} )
. catch ( function ( error ) {
console . log ( error ) ;
} ) ;
Executando múltiplas solicitações simultâneas
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 ] ;
} ) ;
As solicitações podem ser feitas passando a configuração relevante para 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' ) ;
Por conveniência, foram fornecidos aliases para todos os métodos de solicitação comuns.
Ao usar os métodos de alias url
, method
e data
as propriedades não precisam ser especificadas na configuração.
Use Promise.all
para substituir as funções abaixo.
Funções auxiliares para lidar com solicitações simultâneas.
axios.all(iterável) axios.spread(retorno de chamada)
Você pode criar uma nova instância do axios com uma configuração personalizada.
const instance = axios . create ( {
baseURL : 'https://some-domain.com/api/' ,
timeout : 1000 ,
headers : { 'X-Custom-Header' : 'foobar' }
} ) ;
Os métodos de instância disponíveis estão listados abaixo. A configuração especificada será mesclada com a configuração da instância.
Estas são as opções de configuração disponíveis para fazer solicitações. Apenas o url
é necessário. As solicitações terão como padrão GET
se method
não for especificado.
{
// `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