Skip to content

Commit

Permalink
docs: add ru readme for landing (#42)
Browse files Browse the repository at this point in the history
  • Loading branch information
vvtimofeev authored Dec 27, 2024
1 parent 048a866 commit 3699223
Showing 1 changed file with 109 additions and 0 deletions.
109 changes: 109 additions & 0 deletions README-ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# Axios Wrapper

`Axios Wrapper` — это библиотека, которая предоставляет удобную обертку над Axios, добавляя к ее функционалу автоматическую отмену одновременно выполняемых запросов.

## Установка

```shell
npm install --save-dev @gravity-ui/axios-wrapper
```

## HTTP API

### Параметры конструктора

##### `config` (опциональный)

Конфигурация экземпляра `axios`.

##### `collector` (опциональный)

Конфигурация сборщика запросов представляется в виде объекта:

```json
{
"collectErrors": 10,
"collectRequests": 10
}
```

### Основные методы

`Axios Wrapper` поддерживает следующие HTTP-методы: `get`, `head`, `put`, `post`, `delete`.

Методы `get` и `head` имеют сигнатуру `(url, params, options)`, а `put`, `post` и `delete``(url, data, params, options)`.

В `params` задаются параметры строки запроса, а в `options` — настройки запроса.

На данный момент поддерживаются следующие настройки запроса:

- `concurrentId (string)` — идентификатор запроса. Данная настройка является опциональной.
- `collectRequest (bool)` — флаг для включения или отключения логирования запроса (по умолчанию — `true`). Данная настройка является опциональной.
- `requestConfig (object)` — конфигурация с пользовательскими параметрами запроса. Данная настройка является опциональной.
- `headers (object)` — объект с пользовательскими заголовками запроса. Данная настройка является опциональной.
- `timeout (number)` — таймаут запроса. Данная настройка является опциональной.
- `onDownloadProgress (function)` — обратный вызов для обработки прогресса загрузки файла. Данная настройка является опциональной.

### Заголовки

Метод `setDefaultHeader({name (string), value (string), methods (array)})` позволяет добавить заголовок по умолчанию для запроса.

`name` и `value` — обязательные аргументы, а `methods` — опциональный аргумент, указывающий все методы, которым будут переданы такие заголовки по умолчанию (по умолчанию заголовки передаются всем методам).

### CSRF

Метод `setCSRFToken` позволяет задать CSRF-токен, который будет добавляться ко всем запросам `put`, `post` и `delete`.

### Одновременно выполняемые запросы

В некоторых случаях лучше отменить запрос в процессе его выполнения, если его результаты больше не нужны. Для этого в `options` запроса необходимо передать `concurrentId`.
При следующем запросе с тем же значением `concurrentId` предыдущий запрос будет отменен.

Также можно вручную отменить запрос, вызвав метод `cancelRequest(concurrentId)`.

### Сбор запросов

С помощью параметра `collector` можно настроить сбор запросов в локальное хранилище. Он хранит все запросы и ошибки отдельно.
Следующий экземпляр `apiInstance` будет хранить 10 последних запросов (как успешных, так и неудачных) и 10 последних ошибочных запросов.

```javascript
const apiInstance = new API({
collector: {
collectErrors: 10,
collectRequests: 10
}
});
```

Для получения сохраненных запросов необходимо вызвать метод `getCollectedRequests`, который возвращает объект``{errors: [...], requests: [...]}`.

### Использование

Рекомендуется использовать наследование от базового класса `AxiosWrapper`:

```javascript
export class API extends AxiosWrapper {
getProjects() {
return this.get('/projects');
}
getSensors({project, selectors}) {
return this.get(`/projects/${project}/sensors`, {selectors, pageSize: 200});
}
getNames({project, selectors}) {
return this.get(`/projects/${project}/sensors/names`, {selectors});
}
getLabels({project, names, selectors}) {
return this.get(`/projects/${project}/sensors/labels`, {names, selectors});
}
}
```

Когда параметр `baseURL` передается в конфигурацию `axios`, запрашиваемые пути будут добавляться к нему:

```javascript
const apiInstance = new API({
config: {
baseURL: '/api/v2'
}
});
```

0 comments on commit 3699223

Please sign in to comment.