Skip to main content

REST toolkit

Project description

rest_toolkit is a Python package which provides a very convenient way to build REST servers. It is build on top of Pyramid, but you do not need to know much about Pyramid to use rest_toolkit.

Quick example

This is a minimal example which defines a Root resource with a GET view, and starts a simple HTTP server. If you run this example you can request http://localhost:8080/ and you will see a JSON response with a status message.

from rest_toolkit import quick_serve
from rest_toolkit import resource

class Root(object):
    def __init__(self, request):

def show_root(root, request):
    return {'status': 'OK'}

if __name__ == '__main__':


0.17 - January 10, 2019

  • Fix usage of NotImplemented

0.16 - April 14, 2018

  • Fix error in handling of JSON validation errors in arrays.

0.15 - April 5, 2018

  • Do not set content-type header on 204 responses.

0.14 - May 25, 2017

  • Fix a Pyramid depcreation warning for unauthenticated_userid.

0.13 - August 18, 2016

  • Preserve response exceptions raised by resource constructors or views if they already have a JSON content type.

  • Modify default JSON validation error response format: use the field with the validation error as key in the response data.

  • Use a custom rest_toolkit.ext.jsonschema.JSONValidationError exception for JSON validation errors. This allows for easy customisation of validation error response by defining a view for JSONValidationError.

0.12 - June 1, 2016

  • Pass extra resource and controller arguments to the underlying add_view() calls. This allows using predicates for views.

0.11 - May 6, 2016

  • Allow update_from_dict to return a custom response, which will be used by the default PATCH and PUT views.

0.10 - May 4, 2016

  • Do not require any permssions for OPTIONS requests. This can badly break authentication, since OPTIONS will be called to check if auth-related headers may be send.

  • Do not register catch-all exception view if debugging is enabled.

0.9 - September 20, 2015

  • Default to not allowing primary key changes for SQLResource objects. This can be toggled with a new allow_primary_key_change variable on the resource class.

  • Correctly set Access-Control-Allow-Methods header for resources using default views.

0.8 - September 5, 2015

  • Correctly handle OPTIONS requests for controllers.

  • Do not require any permissions for the generic error view. This fixes any errors being converted to forbidden errors on sites with a default permission.

0.7 - March 12, 2015

  • Fix editing of SQL resource.

  • Update default views and validation extensions not to assume anything about the to_dict() return format.

  • If the rest_toolkit.debug is set, or the REST_TOOLKIT_DEBUG environment variable is set to true, or the pyramid’s debug-all flag is set the system error exception handler will add the exception traceback to the response under a new traceback key.

  • Add basic support for collection resources. These can handle POST requests to create child objects.

0.6 - November 4, 2014

  • Make sure controllers for resource whose path do not end in a slash are reachable. This fixes issue 12.

  • Fix mismatch between code and documentation: use request_method as parameter name for the controller decorator.

0.5 - October 24, 2014

  • Allow overriding the request method for controllers. This fixes issue 10.

  • Add read_permission, update_permission and delete_permission options to the resource decorator to set permissions for default views. This fixes issue 8.

  • Rely on fixtures provided by pyramid_sqlalchemy for our SQL-related tests.

  • Preserve headers when converting a HTTP response to JSON. This fixes issue 6.

  • The route name for a resource can now be configured with a route_name parameter for the resource decorator.

0.4.1 - July 18, 2014

  • Make sure all raised HTTP exceptions are converted to JSON responses.

0.4 - July 18, 2014

This releases focuses on improving the documentation and fixing problems in the SQL extension.

  • Fix several errors in the SQLResource defaults views.

  • Configuring the SQL extension is no longer necessary if you use pyramid_sqlalchemy to handle SQLAlchemy integration.

  • Travis is now setup to automatically run tests on CPython 2.7, CPython 3.3, CPython 3.4 and PyPy.

  • Fix Python 3 compatibility problem in the generic error view.

  • Drop explicit Python 2.6 support. The tests use too many set literals to make Python 2.6 worthwile.

  • Modify EditableResource to not inherit from ViewableResource. This makes the separation between editing and viewing explicit, and works around the inability of Python to handle the inheritance schemes where a base classes is used multiple times.

  • Remove the default value for replace in EditableResource.updat_from_dict(). This did not serve a useful purpose, and could be confusing.

  • Set self.request in SQLResource constructor.

0.3 - July 11, 2014

This release fixes several critical errors in the SQL extension:

  • Fix the invoction of the context query.

  • Return not-found error from SQLResource instead of an internal error when no SQL row could be found.

  • Do not enable default views for SQLResource automatically. This should be an explicit decision by the user.

0.2.2 - July 11, 2014

  • Fix several errors in SQL extension.

0.2.1 - July 10, 2014

  • Add a to the source distribution installable.

0.2 - July 9, 2014

  • Several demos showing how to use rest_toolkit with AngularJS have been added.

  • Support for default DELETE, GET, PATCH and PUT views has been added.

  • Various documentation fixes and improvements.

0.1 - Released 24 June, 2014

This is the first release.

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

rest_toolkit-0.17.tar.gz (30.5 kB view hashes)

Uploaded source

Built Distribution

rest_toolkit-0.17-py2.py3-none-any.whl (17.1 kB view hashes)

Uploaded py2 py3

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