Skip to main content

The library for writing RESTful APIs with sanic

Project description

sanic-restful-resources

Simple library for creating RESTful APIs with sanic.

Features

  • simplicity
  • schematics integration
  • exceptions handling
  • unified response format
  • 100% coverage

Usage

python3 -m pip install sanic-restful-resources

Example

users = [{'name': 'Michael'}, {'name': 'Ivan'}]


class UserPostSchema(Model):
    name = StringType(required=True)


@resource('/users')
class Users:
    async def get(self, request):
        return users

    @validate(user_data=UserPostSchema)
    async def post(self, request, user_data):
        users.append({'name': user_data.name})
        return '', 204

Guide

  • resource(uri='') - return decorator for classes that will be considered RESTful resources. This decorator automatically extends HTTPMethodView (refer to sanic documentation for details). You can provide resource URI through decorator or by class attribute uri. You can provide decorators for all the methods through class attribute decorators.

    Examples of possible return values for handlers:

    return "data", 200, {"X-Custom-Header": "Value"}
    return "data", 200
    return "data"
    return {"arg": "val"}
    return ["val1", "val2"]
    return "", 201
    
    return sanic.response.json # .text, .html, e.t.c.
    
  • Api(name='API', url_prefix) - class for aggregating resources and registrating them in the sanic application. Internally it uses blueprints. Basic workflow:

    from sanic import Sanic
    from resources import User, Users
    
    app = Sanic()
    
    api = Api(url_prefix='/api/v1')
    api.add_resource(User)
    api.add_resource(Users)
    api.init_app(app)
    
    # ...
    
  • validate(**models) - decorator for methods, that will validate incoming data with provided models from Schematics library. Successfully validated and parsed models will be passed as keyword arguments to the handler method. If any model fails to validate - handler will not be called.

  • error(description=None, details=None, status=400, **kwargs - method for returning errors from handlers.

  • collect_args(request) - method for getting data from all possible sources of data in the request.

Project details


Release history Release notifications

This version

0.1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sanic-restful-resources, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size sanic_restful_resources-0.1.0-py3-none-any.whl (5.6 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size sanic_restful_resources-0.1.0.tar.gz (4.6 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page