# Конфигурация запроса

Это доступные параметры конфигурации для запросов. Нужен только url. Выполняется GET-запрос, если метод не указан.

{
  // `url` - URL-адрес сервера, который будет использоваться для запроса
  url: '/user',

  // `method` - это метод запроса, который следует использовать при подаче запроса
  method: 'get', // значение по умолчанию

  // `baseURL` будет добавляться `url`, если `url` не является абсолютным.
  // Может быть удобно установить `baseURL` для экземпляра axios для передачи относительных URL-адресов
  // к методам этого экземпляра.
  baseURL: 'https://some-domain.com/api',

  // `transformRequest`позволяет изменять данные запроса перед его отправкой на сервер
  // Это применимо только для методов запроса 'PUT', 'POST', 'PATCH' и 'DELETE'
  // Последняя функция в массиве должна возвращать строку или экземпляр Buffer, ArrayBuffer, 
  // FormData или Stream
  // Вы можете изменить объект headers
  transformRequest: [function (data, headers) {
    // Делайте все, что хотите, чтобы преобразовать данные

    return data;
  }],

  // `transformResponse` позволяет вносить изменения в данные ответа перед их передачей then/catch
  transformResponse: [function (data) {
    // Делайте все, что хотите, чтобы преобразовать данные

    return data;
  }],

  // `headers` - это пользовательские заголовки для запроса
  headers: {'X-Requested-With': 'XMLHttpRequest'},

  // `params` - это URL-параметры, которые отправляются вместе с запросом
  // Должно быть обычным объектом или объектом URLSearchParams
  // Примечание: параметры, которые являются нулевыми или неопределенными, не отображаются в URL-адресе.
  params: {
    ID: 12345
  },

  // `paramsSerializer` это дополнительная функция, отвечающая за сериализацию `params`
  // (например https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)
  paramsSerializer: function (params) {
    return Qs.stringify(params, {arrayFormat: 'brackets'})
  },

  // `data` - это данные, которые посылаются как тело запроса
  // Применяется только к методам запроса 'PUT', 'POST', 'DELETE , and 'PATCH'
  // Если параметр `transformRequest` не установлен, он должен иметь один из следующих типов:
  // - строка, обычный объект, ArrayBuffer, ArrayBufferView, URLSearchParams
  // - Только для браузера: FormData, File, Blob
  // - Только для Node.js: Stream, Buffer
  data: {
    firstName: 'Fred'
  },
  
  // альтернатива синтаксису для передачи данных в тело
  // POST-метода
  // отправляется только значение, а не ключ
  data: 'Country=Brasil&City=Belo Horizonte',

  // `timeout` указывает количество миллисекунд до истечения времени ожидания запроса.
  // Если запрос занимает больше времени, чем `timeout`, запрос будет прерван.
  timeout: 1000, // по умолчанию `0` (без времени ожидания)

  // `withCredentials` указывает, будут ли межсайтовые запросы управления доступом
  // должно быть сделано с использованием учетных данных
  withCredentials: false, // по умолчанию

  // `adapter`позволяет настраивать обработку запросов, что упрощает тестирование.
  // Возвращает Promise и предоставляет действительный ответ (см. lib/adapters/README.md).
  adapter: function (config) {
    /* ... */
  },

  // `auth` указывает, что следует использовать базовую аутентификацию HTTP, и предоставляет учетные данные.
  // Это установит заголовок `Authorization`, перезаписав любой существующий
  // `Authorization` пользовательский заголовок, которыё вы установили с помощью `headers`.
  // Обратите внимание, что с помощью этого параметра можно настроить только базовую аутентификацию HTTP.
  // Для токенов Bearer и т. д. вместо этого используйте пользовательский заголовок `Authorization`.
  auth: {
    username: 'janedoe',
    password: 's00pers3cret'
  },

  // `responseType` указывает тип данных, на которые будет отвечать сервер
  // типы данных: 'arraybuffer', 'document', 'json', 'text', 'stream'
  //  Только для браузера: 'blob'
  responseType: 'json', // по умолчанию

  // `responseEncoding` указывает кодирование для декодирования ответов (только для Node.js)
  // Примечание: Игнорируется для `responseType` запросов 'stream' или запросов на стороне клиента
  responseEncoding: 'utf8', // по умолчанию

  // `xsrfCookieName` - это имя файла cookie, которое будет использоваться как значение токена xsrf
  xsrfCookieName: 'XSRF-TOKEN', // по умолчанию

  // `xsrfHeaderName` - это название заголовка http, содержащее значение токена xsrf
  xsrfHeaderName: 'X-XSRF-TOKEN', // по умолчанию

  // `onUploadProgress` позволяет обрабатывать события прогресса загрузки
  // только для браузера
  onUploadProgress: function (progressEvent) {
    // Делайте все, что хотите, с родным событием прогресса
  },

  // `onDownloadProgress` позволяет обрабатывать события прогресса скачивания
  // только для браузера
  onDownloadProgress: function (progressEvent) {
    // Делайте все, что хотите, с родным событием прогресса
  },

  // `maxContentLength` определяет максимальный размер содержимого ответа http в байтах, разрешенный в node.js
  maxContentLength: 2000,

  // `maxBodyLength` (Только для Node.js) определяет максимальный разрешенный размер содержимого HTTP-запроса в байтах.
  maxBodyLength: 2000,

  // `validateStatus` определяет, разрешить или отклонить Promise для данного
  // статуса HTTP-запроса. Если `validateStatus` возвращает `true` (или установлено значение `null`
  // или `undefined`), Promise будет возвращен; иначе, Promise будет отклонен.
  validateStatus: function (status) {
    return status >= 200 && status < 300; // по умолчанию
  },

  // `maxRedirects` определяет максимальное количество перенаправлений в node.js.
  // Если установлено значение 0, перенаправления не будут выполняться.
  maxRedirects: 5, // по умолчанию

  // `socketPath` определяет UNIX Сокет для использования в node.js.
  // например '/var/run/docker.sock' для отправки запросов к docker.
  // Можно указать только `socketPath` или `proxy`.
  // Если указаны оба, используется `socketPath`.
  socketPath: null, // по умолчанию

  // `httpAgent` и `httpsAgent` определяют пользовательский агент, который будет использоваться при выполнении http
  // и https запросов, соответственно в node.js.Это позволяет добавлять такие параметры, как
  // `keepAlive` который не включен по умолчанию.
  httpAgent: new http.Agent({ keepAlive: true }),
  httpsAgent: new https.Agent({ keepAlive: true }),

  // `proxy` определяет имя хоста, порт и протокол прокси-сервера.
  // Вы также можете определить свой прокси, используя обычный `http_proxy` и
  // переменные `https_proxy`. Если вы используете переменные среды для конфигурации прокси
  // вы также можете определить переменную `no_proxy` как список доменов, разделенных запятыми, которые не должны быть проксированы.
  // Используйте `false`, чтобы отключить прокси, игнорируя переменные среды.
  // `auth` указывает, что для подключения к прокси-серверу следует использовать базовую аутентификацию HTTP, и предоставляет учетные данные.
  // Это установит заголовок `Proxy-Authorization`, перезаписав любой существующий
  // `Proxy-Authorization` пользовательский заголовок, который вы установили в `headers`.
  // Если прокси-сервер использует HTTPS, вы должны установить протокол `https`.
  proxy: {
    protocol: 'https',
    host: '127.0.0.1',
    port: 9000,
    auth: {
      username: 'mikeymike',
      password: 'rapunz3l'
    }
  },

  // `cancelToken` указывает токен отмены, который можно использовать для отмены запроса
  // (см. подробнее в разделе Отмена запроса ниже)
  cancelToken: new CancelToken(function (cancel) {
  }),

  // `decompress` указывает, следует ли распаковывать тело ответа
  // автоматически. Если установлено значение `true`, также удалит заголовок 'content-encoding' из объектов ответов всех распакованных ответов.
  // - Только для Node.js (XHR не может отключить декомпрессию)
  decompress: true // по умолчанию

}
Last Updated: 2/24/2023, 9:22:20 AM