Skip to main content

A simple class-based view for Sanic for simple RESTful APIs

Project description

Gotta simplify your REST APIs creation!

Sanic's built-in HTTPMethodView is a useful thing, but sometimes one wants more sugar.

Whay not?

Usage example

import logging

from sanic import Sanic

from sanic_restful import Api, ApiEndpoint

logger = logging.getLogger(__name__)

app = Sanic()


@app.middleware('response')
async def cors_headers(request, response):
    """
    Add CORS headers to all responses, including errors.
    """
    response.headers['Access-Control-Allow-Origin'] = request.headers.get('Origin', '*')
    response.headers['Access-Control-Allow-Credentials'] = 'true'
    response.headers['Access-Control-Allow-Methods'] = 'POST, PUT, PATCH, DELETE, OPTIONS, GET'
    response.headers['Access-Control-Allow-Headers'] = "X-Requested-With,X-Prototype-Version," \
                                                       "Content-Type,Cache-Control,Pragma,Origin,Cookie"
    response.headers['Access-Control-Max-Age'] = '3600'


class TodoResource(ApiEndpoint):
    # method_decorators = [auth.auth_required]
    endpoint = 'todos/<todo_id>'

    async def get(self, request, todo_id):
        return {'id': todo_id}

    async def post(self, request, todo_id):
        return {'id': todo_id}, 201


api = Api(app, [TodoResource], '/v0.9/')

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, debug=True)

And let's try it:

$ http POST http://localhost:8000/v0.9/todos/1
HTTP/1.1 201 Created
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Requested-With,X-Prototype-Version,Content-Type,Cache-Control,Pragma,Origin,Cookie
Access-Control-Allow-Methods: POST, PUT, PATCH, DELETE, OPTIONS, GET
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3600
Connection: keep-alive
Content-Length: 10
Content-Type: application/json
Keep-Alive: 5

{
    "id": "1"
}

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_simple_restful-0.1.0.tar.gz (4.5 kB view hashes)

Uploaded Source

Built Distribution

sanic_simple_restful-0.1.0-py2.py3-none-any.whl (4.7 kB view hashes)

Uploaded Python 2 Python 3

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