Pull to refresh

Comments 2

Для разработки API на основе OpenAPI-schema также советую использовать асинхронную альтернативу — FastAPI. Помимо всего прочего, FastAPI предоставляет удобную интерактивную документацию (Swagger, ReDoc) из коробки.

github.com/tiangolo/fastapi

FastAPI действительно хорош, но хочу отметить, что в данный момент (версия 0.54.1) он может генерировать схемы которые не являются корректными согласно спецификации Open API версий 3.0.x.


Это происходит из-за того, что pydantic, используемый в FastAPI для создания JSON схем использует Draft 7, а не Wright Draft 00 (aka Draft 05) указанный в Open API 3.0.x спецификациях.
Конкретная проблема заключается в ключевых словах exclusiveMinimum и exclusiveMaximum, значения которых в JSON Schema Draft 06 стали иметь тип number и до этого были boolean. Т.е. если схема от FastAPI включает себя эти ключевые слова, то они будут типа number, а не boolean, как должны быть согласно спецификации.


В Schemathesis это решается через специальную опцию командной строки --fixups=all, но по-умолчанию валидация не пропустит такую схему. В Open API 3.1 будет использоваться более новый Draft 2019-09 и конкретно эта проблема должна решиться. На стороне FastAPI так же существует issue посвященный этой проблеме

Sign up to leave a comment.

Articles