django-api-generator

Django API generator over DRF


Keywords
developer-tools, django, dynamic-programming, open-source, pypi-package
License
MIT
Install
pip install django-api-generator==1.0.8

Documentation

Django API Generator

Simple tool that Generates Secure APIs on top of DRF with minimum effort - actively supported by AppSeed.


Features

  • API engine provided by DRF
  • Secured by JWT Tokens (mutating requests)
  • Minimal Configuration (single line in config for each model)
  • Handles any model defined across the project
  • CRUD access logic:
    • READ is public (all items, get item by ID)
    • Mutating requests are protected by JWT Tokens

Django API Generator - DRF Interface (open-source tool).


How to use it


Step #1 - Install the package

$ pip install django-api-generator
// OR
$ pip install git+https://github.com/app-generator/django-api-generator.git

Step #2 - Update Configuration, include the new APPs

INSTALLED_APPS = [
    'django_api_gen',            # Django API GENERATOR  # <-- NEW
    'rest_framework',            # Include DRF           # <-- NEW 
    'rest_framework.authtoken',  # Include DRF Auth      # <-- NEW   
]

Step #3 - Register the model in core/settings.py (API_GENERATOR section)

This sample code assumes that app1 exists and model Book is defined and migrated.

API_GENERATOR = {
    # pattern: 
    # API_SLUG -> Import_PATH 
    'books'  : "app1.models.Book",
}

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ],
}

Step #4 - Migrate DB and create the tables used by DRF

$ python manage.py makemigrations
$ python manage.py migrate

Step #5 - Generate API

$ python manage.py generate-api
// OR 
$ python manage.py generate-api -f # supress confirmation (forcing mode)

The code is generated under the api folder in the ROOT of the project. At each iteration the API code is overwritten.


Step #6 - Update routing, include APIs

from django.contrib import admin
from django.urls import path, include                        # <-- UPD: 'include` directive
from rest_framework.authtoken.views import obtain_auth_token # <-- NEW

urlpatterns = [
    path("admin/", admin.site.urls),
    path("api/",   include("api.urls")),        # <-- NEW
    path('login/jwt/', view=obtain_auth_token), # <-- NEW
]    

Step #7 - Use API

If the managed model is Books, the API interface is /api/books/ and all CRUD methods are available.

Note: for mutating requests, the JWT Token is provided by http://localhost:8000/login/jwt/ route (the user should exist).


Django API Generator - POSTMAN Interface (open-source tool).


Links & resources



Django API Generator - Open-source library provided by AppSeed