Pull to refresh

Comments 5

Эх, как же в Django не хватает автогенерации OpenAPI спеков из коробки, как в FastAPI, NestJS.

https://www.django-rest-framework.org/api-guide/schemas/

Так вот же

Действительно. Вроде бы пару лет назад смотрел, и что-то пошло не так, в итоге брал drf-yasg. Кто-нибудь успешно этим пользуется?

Спасибо за статью) . Хотел бы добавить что в utils есть inline_serializer по сути тот же DynamicFieldsModelSerializer(serializers.ModelSerializer) но не надо писать кас томное решение.

Да, inline_serializer заслуживает упоминания в статье на самом деле, пробовал пользоваться им.

Во-первых, хотел бы сказать, что это всё-таки разные вещи, в случае динамического сериализатора вы указываете просто название отдаваемых полей, а в случае inline_serializer, вы должны полностью описать вложенную структуру, как если бы это был вложенный сериализатор. inline_serializer позволяет бороться с circular dependencies, позволят не писать громоздкие сериализаторы для вложенных структур. Но вообще, за пределами @extend_schema им лучше не пользоваться, это написано и в описании к нему.

А во-вторых, схема может начать расходиться. С виду вроде всё ок, но в случае inline_serializer формат респонса будет выглядеть как один тип, а в случае полноценного сериализатора для вложенных структур это будет ref (ссылка) на уже другой тип и кодогенерация по спеке может перестать генерить типы. Т.е. в сваггере в UI будет примерно то же самое, а в самом yaml будут расхождения, поэтому я от его использования решил отказаться. Если кодогенерацию по спеке не используете и фронтенд-разработчикам достаточно UI, то тогда можно наверное пользоваться.

Sign up to leave a comment.

Articles