Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Fully featured framework for fast, easy and documented API development with Sanic
Sanic-RESTPlus is an extension for Sanic
_ that adds support for quickly building REST APIs.
Sanic-RESTPlus encourages best practices with minimal setup.
If you are familiar with Sanic, Sanic-RESTPlus should be easy to pick up.
It provides a coherent collection of decorators and tools to describe your API
and expose its documentation properly using Swagger
_.
Sanic-RestPlus version 0.6.0 was reworked and now requires Sanic v21.3 or later.
Sanic-RestPlus version 0.4.1 (and previous versions) does not work on Sanic 19.12+, see this bug here: https://github.com/ashleysommer/sanicpluginsframework/issues/15
Please use Sanic-Restplus v0.5.x if you need to deploy on Sanic v19.12 or v20.12
If you are using the Sanic v20.12LTS, please use Sanic-RestPlus v0.5.6.
In the near future, you will be able to install Sanic-Restplus with pip:
.. code-block:: console
$ pip install sanic-restplus
or with easy_install:
.. code-block:: console
$ easy_install sanic-restplus
With Sanic-Restplus, you only import the api instance to route and document your endpoints.
.. code-block:: python
from sanic import Sanic
from sanic_restplus import Api, Resource, fields
from sanic_restplus.restplus import restplus
from sanic_plugin_toolkit import SanicPluginRealm
app = Sanic(__name__)
realm = SanicPluginRealm(app)
rest_assoc = realm.register_plugin(restplus)
api = Api(version='1.0', title='TodoMVC API',
description='A simple TodoMVC API')
ns = api.namespace('todos', description='TODO operations')
todo = api.model('Todo', {
'id': fields.Integer(readOnly=True, description='The task unique identifier'),
'task': fields.String(required=True, description='The task details')
})
class TodoDAO(object):
def __init__(self):
self.counter = 0
self.todos = []
def get(self, id):
for todo in self.todos:
if todo['id'] == id:
return todo
api.abort(404, "Todo {} doesn't exist".format(id))
def create(self, data):
todo = data
todo['id'] = self.counter = self.counter + 1
self.todos.append(todo)
return todo
def update(self, id, data):
todo = self.get(id)
todo.update(data)
return todo
def delete(self, id):
todo = self.get(id)
self.todos.remove(todo)
DAO = TodoDAO()
DAO.create({'task': 'Build an API'})
DAO.create({'task': '?????'})
DAO.create({'task': 'profit!'})
@ns.route('/')
class TodoList(Resource):
'''Shows a list of all todos, and lets you POST to add new tasks'''
@ns.doc('list_todos')
@ns.marshal_list_with(todo)
async def get(self, request):
'''List all tasks'''
return DAO.todos
@ns.doc('create_todo')
@ns.expect(todo)
@ns.marshal_with(todo, code=201)
async def post(self, request):
'''Create a new task'''
return DAO.create(request.json), 201
@ns.route('/<id:int>')
@ns.response(404, 'Todo not found')
@ns.param('id', 'The task identifier')
class Todo(Resource):
'''Show a single todo item and lets you delete them'''
@ns.doc('get_todo')
@ns.marshal_with(todo)
async def get(self, request, id):
'''Fetch a given resource'''
return DAO.get(id)
@ns.doc('delete_todo')
@ns.response(204, 'Todo deleted')
async def delete(self, request, id):
'''Delete a task given its identifier'''
DAO.delete(id)
return '', 204
@ns.expect(todo)
@ns.marshal_with(todo)
async def put(self, request, id):
'''Update a task given its identifier'''
return DAO.update(id, request.json)
rest_assoc.api(api)
if __name__ == '__main__':
app.run(debug=True, auto_reload=False)
The documentation is hosted on Read the Docs <http://flask-restplus.readthedocs.io/en/latest/>
_
That is the Flask RestPlus documentation, the Sanic-Restplus docs are not converted yet.
.. _Sanic: https://github.com/channelcat/sanic .. _Swagger: http://swagger.io/
REMOVED Flask-Restplus changelog. See the flask-restplus changelog in the relevant parent repository.
FAQs
Fully featured framework for fast, easy and documented API development with Sanic
We found that sanic-restplus demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.