Укажите "потоковый" ответ в swagger.yml для пошаговой отправки данных клиенту bravado

Мы внедрили REST-сервис на основе Python, который определяет конечные точки через Swagger. На стороне клиента мы используем библиотеку бравадо. Эта комбинация отлично работает для всех, кроме одной конечной точки. Эта конечная точка должна возвращать большой набор данных, который не может храниться в памяти и должен быть передан в поток. Я хочу отправлять по одной записи за раз и по каждой строке, как описано здесь. Согласно спецификации должно быть возможно использовать "файл" в качестве типа данных, но я не смог найти примеры для входного файла (т.е. загрузки файлов) и ни одного для загрузки файлов.

Любой намек, как указать потоковый вывод через Swagger и как получить его через клиент Bravado?

1 ответ

В схеме Swagger была ошибка, которую вы можете найти здесь: https://github.com/OAI/OpenAPI-Specification/issues/260 Библиотека, которую я использовал, все еще использовала старую схему. И обновление решило проблему. Клиент bravado пытается загрузить все данные в память, что делает его непригодным для моего случая использования, но в целом это работает, если вы используете последнюю схему и ваши данные помещаются в память.

Другие вопросы по тегам