Аутентификация, авторизация и предотвращение мошенничества на основе API Веб-сайт | Документация | Node.js | Нас объединяет одна общая цель: предоставить вам необходимые финансовые инструменты, ресурсы и информацию... www.principal.com | Привет, мы Дескоп! Мы создаем что-то в области аутентификации для разработчиков приложений и... Веб-сайт | Документация | Сообщество |
На Buzzoid вы можете быстро, безопасно и легко купить подписчиков в Instagram всего за несколько кликов. Ставка... buzzoid.com | В Famety вы можете быстро, безопасно и легко увеличить количество подписчиков в социальных сетях всего за несколько кликов... www.famety.com | Купить лайки в Инстаграм poprey.com |
? Стать спонсором | ? Стать спонсором | ? Стать спонсором |
HTTP-клиент на основе Promise для браузера и node.js
Веб-сайт • Документация
multipart/form-data
и x-www-form-urlencoded
Последние ✔ | Последние ✔ | Последние ✔ | Последние ✔ | Последние ✔ |
Использование НПМ:
$ npm install axios
Использование беседки:
$ bower install axios
Использование пряжи:
$ yarn add axios
Использование пнпм:
$ 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 вам может потребоваться сделать следующее:
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.
Чтобы получить типизацию TypeScript (для intellisense/автозаполнения) при использовании импорта CommonJS с помощьюrequire()
, используйте следующий подход:
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' ) ;
Для удобства для всех распространенных методов запроса предусмотрены псевдонимы.
При использовании методов-псевдонимов свойства 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
. По умолчанию запросы будут GET
, если method
не указан.
{
// `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