Skip to main content

Framework providing REST JSON API to Tornado web server

Project description

Tornado_jsonapi

Build Status Coverage Status Requirements Status PyPi version Documentation Status GitHub License

Tornado_jsonapi is a Python 3.3+ library for creating JSON API (as per jsonapi.org specification) using Tornado web framework. It features

  • semi-automatic API generation using provided JSON schema of resource;

  • support for arbitrary data sources, including SQLAlchemy and PostgreSQL (via DBAPI2 support layer);

  • support for asynchronous data source operations;

  • strict jsonapi.org specification conformance.

Usage

import sqlite3
import tornado.ioloop
import tornado.web
import tornado_jsonapi.handlers
import tornado_jsonapi.resource

schema = {
    "title": "post",
    "properties": {
        "text":
        {
            "type": "string"
        },
        "author":
        {
            "type": "string"
        }
    }
}

res = tornado_jsonapi.resource.DBAPI2Resource(
    schema, sqlite3, sqlite3.connect(':memory:'))
res._create_table()

application = tornado.web.Application([
    (
        r"/api/posts/([^/]*)",
        tornado_jsonapi.handlers.APIHandler,
        dict(resource=res)
    )
])
application.listen(8888)
tornado.ioloop.IOLoop.current().start()

Installation

$ pip install tornado_jsonapi

Documentation

https://tornado_jsonapi.readthedocs.org

Roadmap

a.k.a. TODO

  • improve documentation :pensive:

  • automatic API doc generation based on JSON schema;

  • MongoDB/Motor support;

  • support for API testing.

License

This project is licensed under the MIT License.

Changelog

0.1.4 (2020-01-24)

  • Added support for column blacklisting and pagination, thanks to Zachary Gorak.

0.1.3 (2016-04-07)

  • Fixed incompatibility with latest python-jsonschema-objects

  • Updated obsolete requirements

  • Adjusted supported Python versions

0.1.2 (2016-04-07)

  • Fixed dependencies issue preventing installation in environment with LANG=C

0.1.0 (2016-03-21)

  • First release.

Supported by

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