Встроенная документация по API¶
Встроенная документация по API включает:
Документация конечных точек API.
Автоматически генерируемые примеры кода для каждой из доступных клиентских библиотек API.
Поддержка взаимодействия с API.
Установка¶
Библиотека coreapi требуется в качестве зависимости для документации API. Обязательно установите последнюю версию. Библиотеки Pygments и Markdown являются необязательными, но рекомендуемыми.
Чтобы установить документацию API, вам нужно включить ее в URLconf вашего проекта:
from rest_framework.documentation import include_docs_urls
urlpatterns = [
...
path('docs/', include_docs_urls(title='My API title'))
]
Это будет включать в себя два различных вида:
/docs/- Сама страница документации./docs/schema.js- Ресурс JavaScript, раскрывающий схему API.
Примечание : По умолчанию include_docs_urls конфигурирует базовый SchemaView для генерации публичных схем. Это означает, что представления не будут инстанцироваться с экземпляром request. Т.е. внутри представления self.request будет None.
Чтобы быть совместимыми с таким поведением, методы (такие как get_serializer или get_serializer_class и т.д.), которые проверяют self.request или, в частности, self.request.user, могут быть скорректированы для обработки этого случая.
Вы можете обеспечить представление экземпляром request, вызывая include_docs_urls с public=False :
from rest_framework.documentation import include_docs_urls
urlpatterns = [
...
# Generate schema with valid `request` instance:
path('docs/', include_docs_urls(title='My API title', public=False))
]
Документирование ваших взглядов¶
Вы можете документировать свои представления, включив в них docstrings, описывающие каждое из доступных действий. Например:
class UserList(generics.ListAPIView):
"""
Return a list of all the existing users.
"""
Если представление поддерживает несколько методов, следует разделить документацию с помощью разделителей в стиле method:.
class UserList(generics.ListCreateAPIView):
"""
get:
Return a list of all the existing users.
post:
Create a new user instance.
"""
При использовании наборов представлений следует использовать соответствующие имена действий в качестве разделителей.
class UserViewSet(viewsets.ModelViewSet):
"""
retrieve:
Return the given user.
list:
Return a list of all the existing users.
create:
Create a new user instance.
"""
Пользовательские действия над наборами представлений также можно документировать аналогичным образом, используя имена методов в качестве разделителей или присоединяя документацию к методам отображения действий.
class UserViewSet(viewsets.ModelViewset):
...
@action(detail=False, methods=['get', 'post'])
def some_action(self, request, *args, **kwargs):
"""
get:
A description of the get method on the custom action.
post:
A description of the post method on the custom action.
"""
@some_action.mapping.put
def put_some_action():
"""
A description of the put method on the custom action.
"""
documentation API Reference¶
Модуль rest_framework.documentation предоставляет три вспомогательные функции для настройки интерактивной документации API, include_docs_urls (использование показано выше), get_docs_view и get_schemajs_view.
include_docs_urlsиспользуетget_docs_viewиget_schemajs_viewдля генерации шаблонов url для страницы документации и ресурса JavaScript, который раскрывает схему API соответственно. Они предоставляют следующие опции для настройки. (**get_docs_viewиget_schemajs_viewв конечном итоге вызываютrest_frameworks.schemas.get_schema_view(), см. док-ты по схемам для получения дополнительной информации).
include_docs_urls¶
title: По умолчаниюNone. Может использоваться для предоставления описательного заголовка для определения схемы.description: По умолчаниюNone. Может использоваться для предоставления описания для определения схемы.schema_url: По умолчаниюNone. Может использоваться для передачи канонического базового URL для схемы.public: По умолчаниюTrue. Следует ли считать схему публичной*? ЕслиTrueсхема генерируется безrequestэкземпляра, передаваемого представлениям.patterns: По умолчаниюNone. Список URL, которые необходимо проверить при генерации схемы. ЕслиNone, то будет использоваться URL conf проекта.generator_class: По умолчаниюrest_framework.schemas.SchemaGenerator. Может использоваться для указания подклассаSchemaGenerator, который будет передан вSchemaView.authentication_classes: По умолчаниюapi_settings.DEFAULT_AUTHENTICATION_CLASSES. Может использоваться для передачи пользовательских классов аутентификации вSchemaView.permission_classes: По умолчаниюapi_settings.DEFAULT_PERMISSION_CLASSESМожет использоваться для передачи пользовательских классов разрешений вSchemaView.renderer_classes: По умолчаниюNone. Может использоваться для передачи пользовательских классов рендеринга вSchemaView.
get_docs_view¶
title: По умолчаниюNone. Может использоваться для предоставления описательного заголовка для определения схемы.description: По умолчаниюNone. Может использоваться для предоставления описания для определения схемы.schema_url: По умолчаниюNone. Может использоваться для передачи канонического базового URL для схемы.public: По умолчаниюTrue. ЕслиTrueсхема генерируется безrequestэкземпляра, передаваемого представлениям.patterns: По умолчаниюNone. Список URL, которые необходимо проверить при генерации схемы. ЕслиNone, то будет использоваться URL conf проекта.generator_class: По умолчаниюrest_framework.schemas.SchemaGenerator. Может использоваться для указания подклассаSchemaGenerator, который будет передан вSchemaView.authentication_classes: По умолчаниюapi_settings.DEFAULT_AUTHENTICATION_CLASSES. Может использоваться для передачи пользовательских классов аутентификации вSchemaView.permission_classes: По умолчаниюapi_settings.DEFAULT_PERMISSION_CLASSES. Может использоваться для передачи пользовательских классов разрешений вSchemaView.renderer_classes: По умолчаниюNone. Может использоваться для передачи пользовательских классов рендереров вSchemaView. ЕслиNone,SchemaViewбудет сконфигурирован сDocumentationRendererиCoreJSONRendererрендерами, соответствующими (по умолчанию)htmlиcorejsonформатам.
get_schemajs_view¶
title: По умолчаниюNone. Может использоваться для предоставления описательного заголовка для определения схемы.description: По умолчаниюNone. Может использоваться для предоставления описания для определения схемы.schema_url: По умолчаниюNone. Может использоваться для передачи канонического базового URL для схемы.public: По умолчаниюTrue. ЕслиTrueсхема генерируется безrequestэкземпляра, передаваемого представлениям.patterns: По умолчаниюNone. Список URL, которые необходимо проверить при генерации схемы. ЕслиNone, то будет использоваться URL conf проекта.generator_class: По умолчаниюrest_framework.schemas.SchemaGenerator. Может использоваться для указания подклассаSchemaGenerator, который будет передан вSchemaView.authentication_classes: По умолчаниюapi_settings.DEFAULT_AUTHENTICATION_CLASSES. Может использоваться для передачи пользовательских классов аутентификации вSchemaView.permission_classes: По умолчаниюapi_settings.DEFAULT_PERMISSION_CLASSESМожет использоваться для передачи пользовательских классов разрешений вSchemaView.
Настройка примеров кода¶
Встроенная документация по API включает автоматически сгенерированные примеры кода для каждой из доступных клиентских библиотек API.
Вы можете настроить эти примеры, подклассифицировав DocumentationRenderer , установив languages в список языков, которые вы хотите поддерживать:
from rest_framework.renderers import DocumentationRenderer
class CustomRenderer(DocumentationRenderer):
languages = ['ruby', 'go']
Для каждого языка вам необходимо предоставить шаблон intro, в котором подробно описаны инструкции по установке и т.п., а также общий шаблон для выполнения API-запросов, который можно заполнить деталями индивидуального запроса. Примеры смотрите в templates for the bundled languages.