Raw
Реестр Raw предоставляет универсальное файловое хранилище через HTTP PUT/GET/DELETE. Используйте его для бинарных файлов, скриптов, конфигурационных файлов или любых артефактов, которые не подходят под другие форматы реестров.
Настройка клиента
Заголовок раздела «Настройка клиента»Загрузка и скачивание файлов с помощью curl:
# Загрузкаcurl -X PUT --data-binary @myfile.tar.gz http://nora.example.com:4000/raw/path/to/myfile.tar.gz
# Скачиваниеcurl -O http://nora.example.com:4000/raw/path/to/myfile.tar.gz
# Проверка существования файлаcurl -I http://nora.example.com:4000/raw/path/to/myfile.tar.gz
# Удалениеcurl -X DELETE http://nora.example.com:4000/raw/path/to/myfile.tar.gzПроксирование upstream
Заголовок раздела «Проксирование upstream»Реестр Raw не поддерживает upstream-проксирование. Он работает исключительно как прямое хранилище.
Возможности
Заголовок раздела «Возможности»| Функция | Статус | Примечание |
|---|---|---|
| Загрузка (PUT) | Полная | Любой тип файла |
| Скачивание (GET) | Полная | Content-Type по расширению |
| Удаление (DELETE) | Полная | |
| Проверка существования (HEAD) | Полная | Возвращает размер + Content-Type |
| Максимальный размер файла | Полная | Настраивается (по умолчанию 100 МБ) |
Условная перезапись (If-Match) | Полная | На основе ETag, возвращает 200 при успехе |
Создание без перезаписи (If-None-Match: *) | Полная | Возвращает 412 если ресурс существует |
| Листинг каталогов | — | Не реализовано |
| Иммутабельность | Полная | По умолчанию; повторная загрузка возвращает 409 без условных заголовков |
Переменные окружения:
| Переменная | Описание | По умолчанию |
|---|---|---|
NORA_RAW_ENABLED | Включить реестр Raw | true |
NORA_RAW_MAX_FILE_SIZE | Максимальный размер файла в байтах | 104857600 (100 МБ) |
NORA_RAW_CACHE_CONTROL | Заголовок Cache-Control для GET/HEAD ответов | no-cache |
config.toml:
[raw]enabled = truemax_file_size = 104857600cache_control = "no-cache"Условные запросы (RFC 9110)
Заголовок раздела «Условные запросы (RFC 9110)»Raw поддерживает условный PUT для безопасного создания и обновления:
# Создать только если не существует (возвращает 412 если уже есть)curl -X PUT -H "If-None-Match: *" --data-binary @file.txt http://nora:4000/raw/path/file.txt
# Перезаписать только при совпадении ETag (возвращает 412 при несовпадении)ETAG=$(curl -sI http://nora:4000/raw/path/file.txt | grep -i etag | awk '{print $2}' | tr -d '\r')curl -X PUT -H "If-Match: $ETAG" --data-binary @file-v2.txt http://nora:4000/raw/path/file.txtИзвестные ограничения
Заголовок раздела «Известные ограничения»- Листинг каталогов не поддерживается — необходимо знать точный путь к файлу.
- Файлы иммутабельны по умолчанию. Повторная загрузка по тому же пути возвращает 409, если не указаны условные заголовки (
If-Match,If-None-Match). - Upstream-проксирование не поддерживается.