Комментарии 2
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 посвященный этой проблеме
Schemathesis: property-based тестирование для API схем