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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

File details

Details for the file sanic_simple_restful-0.1.0.tar.gz.

File metadata

  • Download URL: sanic_simple_restful-0.1.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for sanic_simple_restful-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6c04f21e5ce87684b31d1e14dbc767e3ed369d64c95e709f548cafb9ab09ae1e
MD5 7d4589d7ad313227d2121ef57a5e2d30
BLAKE2b-256 cf56b73897cd2a18d7a8580d44a2522faa44b39ef29ba5af9ba034de56e11869

See more details on using hashes here.

File details

Details for the file sanic_simple_restful-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for sanic_simple_restful-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 51f756371a2dcdec6e94949c5de77dd178c38eaa4aad7608382242fcc352e491
MD5 d7af7b4b10be3b20f574f1d1cacddd83
BLAKE2b-256 201de906790fc1fa445186a87e1792398e355a13c9658a7a7dc7ff490e5a5cfd

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