Opinionated API framework on top of Django REST framework
Project description
Thorgate API Core
Opinionated API framework on top of Django REST framework
Free software: ISC license
Supports Python 3.5+, Django 1.11+, Django REST framework 3.6+
Features
- API documentation automatically generated from your views
General intro can be added
You can add example request/response data
Autogenerated Python requests-based examples
Not interactive yet
- Integrates JSON API
Cursor pagination with configurable page size
Viewset classes for using different serializers and querysets for list/detail/edit endpoints
API-specific 404 view
Test utilities, e.g. for response validation
- Versioning (WIP)
Transformer-based approach, inspired by djangorestframework-version-transforms and Stripe
Usage
pip install tg-apicore
Add tg_apicore to INSTALLED_APPS
Ensure your REST_FRAMEWORK setting contains ALLOWED_VERSIONS, e.g:
# In your Django project settings: REST_FRAMEWORK = { 'ALLOWED_VERSIONS': ('2018-01-01',), }
Note that the default paginator requires that your models have created field
Create API documentation view by subclassing APIDocumentationView and making necessary modifications. See example/example/views.py for example.
Add main API urls plus 404 view (as fallback).
Here’s an example urls.py:
from tg_apicore.views import PageNotFoundView
from myproject.views import MyProjectAPIDocumentationView
urlpatterns = [
# The documentation view
url(r'^api-docs/', MyProjectAPIDocumentationView.as_view(), name='api-docs'),
# myproject.urls_api should contain your API urls patterns
url(r'^api/(?P<version>(\d{4}-\d{2}-\d{2}))/', include('myproject.urls_api')),
# API-specific 404 for everything under api/ prefix
url(r'^api/', include(PageNotFoundView.urlpatterns())),
]
See example directory for a more in-depth demo.
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.3.0 (2018-05-23)
Add Usage section to README (to make starting up easier)
Most REST_FRAMEWORK settings are now automatically configured by Thorgate API Core. Users only need to specify ALLOWED_VERSIONS, the rest is optional.
0.2.1 (2018-04-14)
Fix packaging (tg_apicore subdirs weren’t included)
0.2.0 (2018-04-14)
Added PageNotFoundView (JSON-based 404 views)
Added DetailSerializerViewSet (different serializers and queryset for list/detail/edit views)
Added CreateOnlyFieldsSerializerMixin, ModelValidationSerializerMixin and BaseModelSerializer
Renamed APIDocumentationView.get_patterns() to .urlpatterns()
Improved example app a lot. It now also includes tests that partially test tg-apicore itself
0.1.0 (2018-03-08)
First release on PyPI.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tg-apicore-0.3.0.tar.gz
.
File metadata
- Download URL: tg-apicore-0.3.0.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | da47e7539dc080bced58f982df7aba14aa22226473bb7685085e07d063320a03 |
|
MD5 | 41b071cedbf2db12779217857b3e7a80 |
|
BLAKE2b-256 | 0cf2a32347f79323716be0c168d4379aaf52e784b63aebc813c6c17cec9f6ff9 |
File details
Details for the file tg_apicore-0.3.0-py2.py3-none-any.whl
.
File metadata
- Download URL: tg_apicore-0.3.0-py2.py3-none-any.whl
- Upload date:
- Size: 23.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac7c9a749b950b1e7e7f5da76c63d809a41e08d772faea62c53847a93b2329b4 |
|
MD5 | f85726d6daa5d397bebd3844b500c97f |
|
BLAKE2b-256 | 0d8bc209afe8f2ef5ec4de9c27501fae51bd0d07cd1dcc593f7e443be9e423d4 |