--- ## Image Storage Service — API ### POST `/upload` Загрузка изображения как файла. **Параметры запроса:** * `file` — файл изображения (multipart/form-data, обязательный) * `subdir` — подкаталог хранения (query, необязательный, по умолчанию `posters`) **Ответ:** ```json { "path": "posters/ab/cd/.jpg" } ``` **Пример:** ```bash curl -F "file=@poster.jpg" "http://localhost:8000/upload?subdir=posters" ``` --- ### POST `/download-by-url` Загружает изображение из внешнего URL в файловое хранилище сервиса. Клиенту файл не возвращается — сохраняется только на стороне сервиса. **Тело запроса (JSON):** ```json { "url": "https://example.com/image.jpg", "subdir": "posters" } ``` `subdir` — необязательный, по умолчанию `posters`. **Ответ:** ```json { "path": "posters/ab/cd/.jpg" } ``` **Пример:** ```bash curl -X POST "http://localhost:8000/download-by-url" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com/image.jpg"}' ``` --- ### GET `/{path:path}` Получение сохранённого файла по относительному пути. **Параметры:** * `path` — относительный путь к файлу (например: `posters/ab/cd/.jpg`) **Ответы:** * `200 OK` — файл * `404 Not Found` — файл не найден **Пример:** ```bash curl http://localhost:8000/posters/ab/cd/.jpg --output image.jpg ``` --- ### Формат ответа Все write-эндпоинты (`POST`) возвращают объект: ```json { "path": "" } ``` Этот `path` используется для последующего доступа через `GET /{path}`.