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.1.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: sanic-restful-api-0.2.1.tar.gz
  • Upload date:
  • Size: 19.2 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.1.tar.gz
Algorithm Hash digest
SHA256 08d4ccbe1b9eb5159da912c8b7256de0b2a868f039be3856744e2c1a85303c78
MD5 333efe0ad142df651a01fd7ba21d1405
BLAKE2b-256 27f5b1fc8d4b2173aae8b02cae33b262968595486bf28f864ba6f303314b3bc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sanic_restful_api-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7484297d6d23ffff91e92ccdbca87f417ea703e8b14c878eeffc86715f6f6788
MD5 98c6b07a11190245cb902d4192a163d7
BLAKE2b-256 f96ff5df005b520445c066174644a5686bbf5fba128d18e58bf468fb06b35ba7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page