REST-фреймворк Django 3.10¶
В выпуске 3.10 прекращена поддержка Python 2.
В настоящее время поддерживаемые нами версии Python составляют: 3.5, 3.6 и 3.7.
В настоящее время поддерживаемые нами версии Django следующие: 1.11, 2.0, 2.1 и 2.2.
Генерация схемы OpenAPI¶
С тех пор, как мы впервые представили поддержку схем в Django REST Framework 3.5, OpenAPI стал широко распространенным стандартом для моделирования веб-интерфейсов.
Этот выпуск начинает процесс устаревания генерации схем на основе CoreAPI и вводит генерацию схем на основе OpenAPI.
Продолжаем использовать CoreAPI¶
Если вы в настоящее время используете схемы CoreAPI, вам нужно убедиться, что вы обновили настройки REST framework, чтобы явно включить DEFAULT_SCHEMA_CLASS
.
settings.py :
REST_FRAMEWORK = {
...
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}
Вы сможете продолжать использовать схемы CoreAPI, документацию по API и клиент в обозримом будущем. Мы будем стремиться к тому, чтобы генератор схем CoreAPI оставался доступным в качестве стороннего пакета, даже когда он будет удален из REST framework, что запланировано на версию 3.12.
Мы удалили старую документацию по генерации схем на основе CoreAPI. Вы можете просмотреть Legacy CoreAPI documentation here.
OpenAPI Quickstart¶
Вы можете сгенерировать статическую схему OpenAPI, используя команду управления generateschema
.
В качестве альтернативы, чтобы проект обслуживал схему API, используйте сочетание клавиш get_schema_view()
.
В вашем <<< 0 >>** :
from rest_framework.schemas import get_schema_view
urlpatterns = [
# ...
# Use the `get_schema_view()` helper to add a `SchemaView` to project URLs.
# * `title` and `description` parameters are passed to `SchemaGenerator`.
# * Provide view name for use with `reverse()`.
path('openapi', get_schema_view(
title="Your Project",
description="API for all things …"
), name='openapi-schema'),
# ...
]
Персонализация¶
Для настроек, которые вы хотите применить ко всему API, вы можете подкласс rest_framework.schemas.openapi.SchemaGenerator
и предоставить его в качестве аргумента команды generateschema
или вспомогательной функции get_schema_view()
.
Для специфических настроек для каждого вида можно использовать подкласс AutoSchema
, обязательно установив schema = <YourCustomClass>
для вида.
Более подробную информацию см. в разделе API Schema documentation.
Документация API¶
Существует несколько отличных сторонних вариантов документирования API, основанных на схеме OpenAPI.
Более подробную информацию см. в разделе Documenting you API.
Дорожная карта¶
Учитывая, что генерация схем OpenAPI - это новая функция, вероятно, нам еще предстоит внести некоторые итерационные улучшения. Здесь будет два основных случая:
Расширение поддерживаемого диапазона схем OpenAPI, которые генерируются по умолчанию.
Улучшение возможностей разработчиков по настройке вывода.
Первый тип изменений мы будем стремиться внедрять быстро в точечных релизах. Для второго типа мы хотели бы использовать более медленный подход, чтобы убедиться, что мы сохраняем API простым и как можно более широко применимым, прежде чем вносить изменения в API.
Также возможно, что в конечном итоге мы реализуем документацию по API и инструментарий для клиентов API, которые будут управляться схемой OpenAPI. Проект apistar
имеет значительный объем работы в этом направлении. Однако, если мы это сделаем, мы планируем держать все инструменты за пределами основного фреймворка.
Финансирование¶
REST framework - это коллаборативно финансируемый проект. Если вы используете REST framework в коммерческих целях, мы настоятельно рекомендуем вам инвестировать в его дальнейшее развитие путем ** :doc:`signing up for a paid plan <funding>`** **.
Каждая регистрация помогает нам сделать REST framework долгосрочным и финансово устойчивым.
- :raw-html-m2r:`<ul class=»premium-promo promo»>
<li><a href=»https://getsentry.com/welcome/» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/sentry130.png)»>Sentry</a></li> <li><a href=»https://getstream.io/try-the-api/?utm_source=drf&utm_medium=banner&utm_campaign=drf» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/stream-130.png)»>Stream</a></li> <li><a href=»https://software.esg-usa.com» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/esg-new-logo.png)»>ESG</a></li> <li><a href=»https://rollbar. com» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/rollbar2.png)»>Rollbar</a></li> <li><a href=»https://cadre.com» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/cadre.png)»>Cadre</a></li> <li><a href=»https://hubs.ly/H0f30Lf0» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/kloudless-plus-text.png)»>Kloudless</a></li> <li><a href=»https://lightsonsoftware.com» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/lightson-dark.png)»>Lights On Software</a></li> <li><a href=»https://lightsonsoftware.com» style=»background-image: url(https://fund-rest-framework.s3.amazonaws.com/lightson-dark.png)»>Lights On Software</a></li>.
</ul>`
Большое спасибо всем нашим :doc:`wonderful sponsors <https://fund.django-rest-framework.org/topics/funding/#our-sponsors>`*, и в особенности нашим премиум бэкерам, Sentry.*.