mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-29 17:39:48 +03:00
Begin v3.10 Release Announcement.
This commit is contained in:
parent
5f0f3b5c2d
commit
3fb872b252
104
docs/community/3.10-announcement.md
Normal file
104
docs/community/3.10-announcement.md
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
|
||||||
|
# Django REST framework 3.10
|
||||||
|
|
||||||
|
|
||||||
|
* Reworked OpenAPI schema generation.
|
||||||
|
* Python 3 only.
|
||||||
|
|
||||||
|
|
||||||
|
## OpenAPI Schema Generation.
|
||||||
|
|
||||||
|
Since we first introduced schema support in Django REST Framework 3.5, OpenAPI has emerged as the widely adopted standard for modelling Web APIs.
|
||||||
|
|
||||||
|
This release deprecates the old CoreAPI based schema generation, and introduces improved OpenAPI schema generation in its place.
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
**Switching mode between `CoreAPI` and `OpenAPI`**
|
||||||
|
|
||||||
|
Both the `generateschema` management command and `get_schema_view()` helper
|
||||||
|
function will automatically switch between `CoreAPI` and `OpenAPI` modes,
|
||||||
|
depending on the value of `api_settings.DEFAULT_SCHEMA_CLASS`.
|
||||||
|
|
||||||
|
If `api_settings.DEFAULT_SCHEMA_CLASS` is a subclass of
|
||||||
|
`rest_framework.schemas.coreapi.AutoSchema` then `CoreAPI` mode will be
|
||||||
|
selected. Otherwise the new `OpenAPI` will apply.
|
||||||
|
|
||||||
|
This means that, unless you previously overrode
|
||||||
|
`api_settings.DEFAULT_SCHEMA_CLASS`, you automatically be opted-in to the new
|
||||||
|
`OpenAPI` based schemas.
|
||||||
|
|
||||||
|
You can continue to use CoreAPI schemas by setting the appropriate default
|
||||||
|
schema class:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# In settings.py
|
||||||
|
REST_FRAMEWORK = {
|
||||||
|
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
### Quickstart
|
||||||
|
|
||||||
|
To get going with `OpenAPI` schemas, use the `get_schema_view()` shortcut.
|
||||||
|
|
||||||
|
In your `urls.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
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'),
|
||||||
|
# ...
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
See the Schemas documentation for more details.
|
||||||
|
|
||||||
|
### Feature Roadmap
|
||||||
|
|
||||||
|
For v3.7 (with `CoreAPI`) we tried to anticipate customizations that people
|
||||||
|
were likely to need. (Introducing `manual_fields` and `ManaualSchema`, for
|
||||||
|
example.) These were under-utilised. They weren't the right abstractions.
|
||||||
|
|
||||||
|
So, for a fresh start with `OpenAPI`, customizing schema generation has two
|
||||||
|
simple rules:
|
||||||
|
|
||||||
|
* Subclass `SchemaGenerator` for schema-level cusomizations.
|
||||||
|
* Subclass `AutoSchema` for view-level customizations.
|
||||||
|
|
||||||
|
We'll wait to see what subclasses people actually come up with, for the
|
||||||
|
customizations they actually need, before trying to bring that back into the
|
||||||
|
core framework.
|
||||||
|
|
||||||
|
There are two kinds of changes that easily predictable:
|
||||||
|
|
||||||
|
* General improvements which fill in gaps in the automatic schema generation.
|
||||||
|
* More use-case specific adjustments, which adjust the API of `SchemaGenerator`
|
||||||
|
or `AutoSchema`
|
||||||
|
|
||||||
|
We'll aim to bring the first type of change quickly in point releases. For the
|
||||||
|
second kind we'd like to adopt a slower approach, to make sure we keep the API
|
||||||
|
simple, and as widely applicable as possible, before we bring in API changes.
|
||||||
|
|
||||||
|
We trust that approach makes sense.
|
||||||
|
|
||||||
|
### Deprecating CoreAPI Schema Generation.
|
||||||
|
|
||||||
|
The in-built docs that were introduced in Django REST Framework v3.5 were built on CoreAPI. These are now deprecated. You may continue to use them but they will be **removed in Django REST Framework v 3.12**.
|
||||||
|
|
||||||
|
You should migrate to using the new OpenAPI based schema generation as soon as you can.
|
||||||
|
|
||||||
|
We have removed the old documentation for the CoreAPI based schema generation.
|
||||||
|
You may view the [Legacy CoreAPI documentation here][legacy-core-api-docs].
|
||||||
|
|
||||||
|
[legacy-core-api-docs]:https://github.com/encode/django-rest-framework/blob/master/docs/coreapi/index.md
|
|
@ -64,6 +64,7 @@ pages:
|
||||||
- 'Contributing to REST framework': 'community/contributing.md'
|
- 'Contributing to REST framework': 'community/contributing.md'
|
||||||
- 'Project management': 'community/project-management.md'
|
- 'Project management': 'community/project-management.md'
|
||||||
- 'Release Notes': 'community/release-notes.md'
|
- 'Release Notes': 'community/release-notes.md'
|
||||||
|
- '3.10 Announcement': 'community/3.10-announcement.md'
|
||||||
- '3.9 Announcement': 'community/3.9-announcement.md'
|
- '3.9 Announcement': 'community/3.9-announcement.md'
|
||||||
- '3.8 Announcement': 'community/3.8-announcement.md'
|
- '3.8 Announcement': 'community/3.8-announcement.md'
|
||||||
- '3.7 Announcement': 'community/3.7-announcement.md'
|
- '3.7 Announcement': 'community/3.7-announcement.md'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user