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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

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

Hashes for tg-apicore-0.3.0.tar.gz
Algorithm Hash digest
SHA256 da47e7539dc080bced58f982df7aba14aa22226473bb7685085e07d063320a03
MD5 41b071cedbf2db12779217857b3e7a80
BLAKE2b-256 0cf2a32347f79323716be0c168d4379aaf52e784b63aebc813c6c17cec9f6ff9

See more details on using hashes here.

File details

Details for the file tg_apicore-0.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for tg_apicore-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ac7c9a749b950b1e7e7f5da76c63d809a41e08d772faea62c53847a93b2329b4
MD5 f85726d6daa5d397bebd3844b500c97f
BLAKE2b-256 0d8bc209afe8f2ef5ec4de9c27501fae51bd0d07cd1dcc593f7e443be9e423d4

See more details on using hashes here.

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