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.

Source Distribution

tg-apicore-0.3.0.tar.gz (22.7 kB view hashes)

Uploaded Source

Built Distribution

tg_apicore-0.3.0-py2.py3-none-any.whl (23.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page