Skip to main content

Opinionated API framework on top of Django REST framework

Project description

Thorgate API Core

https://img.shields.io/pypi/v/tg-apicore.svg https://img.shields.io/travis/thorgate/tg-apicore.svg Documentation Status

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)

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.

Files for tg-apicore, version 0.3.0
Filename, size File type Python version Upload date Hashes
Filename, size tg_apicore-0.3.0-py2.py3-none-any.whl (23.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size tg-apicore-0.3.0.tar.gz (22.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page