Skip to main content

The library for writing RESTful APIs with sanic

Project description

sanic-restful-resources

PyPI version CodeFactor codebeat badge Codacy Badge Coverage Status

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

More examples in this folder.

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


Download files

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

Source Distribution

sanic_restful_resources-0.1.1.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

sanic_restful_resources-0.1.1-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file sanic_restful_resources-0.1.1.tar.gz.

File metadata

  • Download URL: sanic_restful_resources-0.1.1.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1

File hashes

Hashes for sanic_restful_resources-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2fe0acaedd64492bf7ab957f4af4443856cbce1b364695f6160f132094e7f53b
MD5 1ed378d68f2c706fa17d694945f2ae7f
BLAKE2b-256 9ecaf2377cdf9098273e93ac5ceb32ee41bae6c6453d1450548355f4867b6731

See more details on using hashes here.

File details

Details for the file sanic_restful_resources-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sanic_restful_resources-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1

File hashes

Hashes for sanic_restful_resources-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a9759d13acd1e01adf448191d53b48cc1a3c4992af703af73e96862cc53ea0bc
MD5 3f152b8e9a3d5fe1ccadc8c2623e15c9
BLAKE2b-256 6139426eeb6b9c0dde922f25ce1b0081972132994cbc50a882a3a4bdc6b1f14a

See more details on using hashes here.

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