Конфигурации APIBackuper
apibackuper-dataarchive — это репозиторий с готовыми конфигурационными файлами для APIBackuper, которые можно использовать для архивации различных государственных и публичных API.
Назначение
Репозиторий содержит проверенные конфигурации для:
- Быстрого старта: Не нужно создавать конфигурацию с нуля
- Примеров: Изучение лучших практик на стройки
- Стандартизации: Единый подход к архивации похожих API
- Совместного использования: Конфигурации можно улучшать сообща
Использование готовых конфигураций
1. Клонирование репозитория
git clone https://github.com/ruarxive/apibackuper-dataarchive.git
cd apibackuper-dataarchive
2. Выбор конфигурации
Просмотрите доступные конфигурации в репозитории:
ls -la configs/
3. Использование конфигурации
Скопируйте нужную конфигурацию в ваш проект:
# Создаём новый проект
apibackuper create myproject
# Копируем конфигурацию
cp apibackuper-dataarchive/configs/example-api/config.yaml myproject/
4. Настройка под ваши нужды
Отредактируйте config.yaml в вашем проекте:
project:
name: myproject # Измените название
# Остальная конфигурация уже готова
5. Запуск архивации
# Оценка объёма данных
apibackuper estimate full -p myproject
# Запуск архивации
apibackuper run full -p myproject
Примеры конфигураций
Государственные API
Электронный бюджет
Конфигурация для архивации данных с портала Электронный бюджет:
project:
name: budget-api
storage:
type: zip
file: budget_data.zip
request:
url: "https://budget.gov.ru/epbs/registry/7710568760-BUDGET/data"
method: GET
params:
page: 1
per_page: 100
iterator:
param: page
start: 1
step: 1
rate_limit:
enabled: true
requests_per_second: 5
Портал открытых данных
Конфигурация для архивации наборов данных:
project:
name: opendata-portal
request:
url: "https://data.gov.ru/api/datasets"
method: GET
params:
page: 1
iterator:
param: page
start: 1
step: 1
max_pages: 1000
auth:
type: api_key
key: "YOUR_API_KEY"
header: "X-API-Key"
API с пагинацией
Стандартная пагинация по страницам
request:
url: "https://api.example.com/items"
method: GET
params:
page: 1
limit: 50
iterator:
param: page
start: 1
step: 1
Пагинация по offset
request:
url: "https://api.example.com/items"
method: GET
params:
offset: 0
limit: 100
iterator:
param: offset
start: 0
step: 100
Пагинация по курсору
request:
url: "https://api.example.com/items"
method: GET
params:
cursor: ""
iterator:
type: cursor
cursor_field: "next_cursor"
response_field: "data"
API с аутентификацией
Bearer Token
auth:
type: bearer
token: "YOUR_TOKEN_HERE"
Basic Authentication
auth:
type: basic
username: "user"
password: "pass"
OAuth2
auth:
type: oauth2
client_id: "YOUR_CLIENT_ID"
client_secret: "YOUR_CLIENT_SECRET"
token_url: "https://api.example.com/oauth/token"
scope: "read"
Паттерны конфигураций
Ограничение скорости
Для API с ограничениями:
rate_limit:
enabled: true
requests_per_second: 2
burst: 5
Обработка ошибок
error_handling:
retries: 3
retry_delay: 5
skip_errors: false
error_codes: [429, 500, 502, 503]
Фильтрация данных
filters:
date_from: "2020-01-01"
date_to: "2023-12-31"
status: ["active", "published"]
Создание собственной конфигурации
Шаблон базовой конфигурации
project:
name: my-api-project
storage:
type: zip
file: data.zip
request:
url: "https://api.example.com/endpoint"
method: GET
params:
# Параметры запроса
iterator:
# Настройки итерации
rate_limit:
enabled: true
requests_per_second: 5
Шаги создания
-
Изучите API документацию
- Найдите эндпоинт для получения данных
- Определите параметры пагинации
- Проверьте требования к аутентификации
-
Протестируйте запрос
curl "https://api.example.com/endpoint?page=1" -
Создайте базовую конфигурацию
- Укажите URL и метод
- Настройте параметры пагинации
- Добавьте аутентификацию при необходимости
-
Протестируйте с estimate
apibackuper estimate full -p myproject -
Запустите на небольшом объёме
- Ограничьте количество страниц для теста
- Проверьте качество данных