Skip to main content

Simple framework for creating REST APIs

Project description

Sanic-RESTful-Api

Simple framework for creating REST APIs

Introduce

After writing Sanic for a long time, I found that there was no framework similar to flask-restful, so I wrote one myself.

flask-restful

Document

click me

Installation

pip install sanic-restful-api

Simple uses

from sanic import Sanic
from sanic_restful_api import reqparse, abort, Api, Resource

app = Sanic(__name__)
api = Api(app)

TODOS = {
    'todo1': {'task': 'build an API'},
    'todo2': {'task': '?????'},
    'todo3': {'task': 'profit!'},
}


def abort_if_todo_doesnt_exist(todo_id):
    if todo_id not in TODOS:
        abort(404, message="Todo {} doesn't exist".format(todo_id))


parser = reqparse.RequestParser()
parser.add_argument('task')

# Todo
#   show a single todo item and lets you delete them


class Todo(Resource):
    async def get(self, request, todo_id):
        abort_if_todo_doesnt_exist(todo_id)
        return TODOS[todo_id]

    async def delete(self, request, todo_id):
        abort_if_todo_doesnt_exist(todo_id)
        del TODOS[todo_id]
        return '', 204

    async def put(self, request, todo_id):
        args = parser.parse_args(request)
        task = {'task': args['task']}
        TODOS[todo_id] = task
        return task, 201


# TodoList
#   shows a list of all todos, and lets you POST to add new tasks
class TodoList(Resource):
    async def get(self, request):
        return TODOS

    async def post(self, request):
        args = parser.parse_args(request)
        todo_id = 'todo%d' % (len(TODOS) + 1)
        TODOS[todo_id] = {'task': args['task']}
        return TODOS[todo_id], 201


##
# Actually setup the Api resource routing here
##
api.add_resource(TodoList, '/todos')
api.add_resource(Todo, '/todos/<todo_id:string>')


if __name__ == '__main__':
    app.run(debug=True)

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-api-0.2.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

sanic_restful_api-0.2.0-py2.py3-none-any.whl (21.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file sanic-restful-api-0.2.0.tar.gz.

File metadata

  • Download URL: sanic-restful-api-0.2.0.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for sanic-restful-api-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6d8a39a920cf83b406aaeb4321de5a02e5d3ee7117df2821f0f82cb36c05d9a6
MD5 691d9316d99378966db0ecd13c335346
BLAKE2b-256 87c09239977fb2bb7089daeb0b0e57a2c240a1dfca13a87268fa197c48f67869

See more details on using hashes here.

File details

Details for the file sanic_restful_api-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for sanic_restful_api-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 131a8a19357d1645f0006d228bfdb736c88e6fec0c6e5ff22712072f174c68ed
MD5 172efce90773a57537487e2f4b26b873
BLAKE2b-256 56be5bd29fe14fb7cdb8ad27345ba140ea0f4f07c79604c82d7e98c551d638d2

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