Skip to content

Bookrest - The easiest way to add rest API to an arbitrary DB

Notifications You must be signed in to change notification settings

agiliq/bookrest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bookrest - The easiest way to add a REST API to an arbitrary database

bookrest image

Bookrest allows you to add an API (and browsable htmls) to arbitrary databases -- well almost arbitrary, the tables must have PKs. The databases do not need to be managed by Django.

Installation and usage

pip install bookrest

Then in your settings.py,

INSTALLED_APPS = [
    # ...
    "rest_framework",
    "bookrest",
]

Add a key to your settings.DATABASES named bookrest, and point it to the DB you want to expose as an API. Keep your default db as is, you can use it for user management and other Django apps.

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": os.path.join(BASE_DIR, "db.sqlite3"),
    },
    "bookrest": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": os.path.join(BASE_DIR, "data/sample.sqlite3"),
    },
}

Connect your urls to bookrest.urls

urlpatterns = [
    # ...
    path("api/", include("bookrest.urls"))
]

🚀 Boom! You are in business. All your tables will have a full read/write API

Here is what it looks like with a DB with three tables.

bookrest image

Todo

  • Test with Sqlite
  • Publish on Pypi
  • Test with Postgres
  • Test with Mysql
  • Add setting to enable a read only API
  • Enable circleci
  • Silently disregard tables with no PKs rather than failing (bad idea??)

Inspired by

This projects was inspired by datasette. I loved datasette, but because DRF has a great browsable API and Django has powerful introspection capabilities, I wanted to do it in Django+DRF.

Bookrest gets all the power of DRF - browsable API, coreapi, filtering, pagination. Set a REST_FRAMEWORK setting in your settings.py and bookrest will apply it.

Whats with the name?

You can put the bookrest on table, and it makes reading simple.

About

Bookrest - The easiest way to add rest API to an arbitrary DB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages