Helpers, syntaxic sugar and Swagger documentation for Flask-Restful
Project description
Flask-RestPlus provide syntaxic suger, helpers and automatically generated Swagger documentation on top of Flask-Restful.
Compatibility
Flask-RestPlus requires Python 2.7+.
Installation
You can install Flask-Restplus with pip:
$ pip install flask-restplus
or with easy_install:
$ easy_install flask-restplus
Quick start
With Flask-Restplus, you only import the api instance to route and document your endpoints.
from flask import Flask from flask.ext.restplus import Api, Resource, fields app = Flask(__name__) api = Api(app, version='1.0', title='Todo API', description='A simple TODO API extracted from the original flask-restful example' ) ns = api.namespace('todos', description='TODO operations') TODOS = { 'todo1': {'task': 'build an API'}, 'todo2': {'task': '?????'}, 'todo3': {'task': 'profit!'}, } todo_fields = api.model('Todo', { 'task': fields.String(required=True, description='The task details') }) def abort_if_todo_doesnt_exist(todo_id): if todo_id not in TODOS: api.abort(404, "Todo {} doesn't exist".format(todo_id)) parser = api.parser() parser.add_argument('task', type=str, required=True, help='The task details') @ns.route('/<string:todo_id>') @api.doc(responses={404: 'Todo not found'}, params={'todo_id': 'The Todo ID'}) class Todo(Resource): '''Show a single todo item and lets you delete them''' @api.doc(notes='todo_id should be in {0}'.format(', '.join(TODOS.keys()))) @api.marshal_with(todo_fields) def get(self, todo_id): '''Fetch a given resource''' abort_if_todo_doesnt_exist(todo_id) return TODOS[todo_id] def delete(self, todo_id): '''Delete a given resource''' abort_if_todo_doesnt_exist(todo_id) del TODOS[todo_id] return '', 204 @api.doc(parser=parser) @api.marshal_with(todo_fields) def put(self, todo_id): '''Update a given resource''' args = parser.parse_args() task = {'task': args['task']} TODOS[todo_id] = task return task, 201 @ns.route('/') class TodoList(Resource): '''Shows a list of all todos, and lets you POST to add new tasks''' @api.marshal_with(todo_fields, as_list=True) def get(self): '''List all todos''' return TODOS @api.doc(parser=parser) @api.marshal_with(todo_fields) def post(self): '''Ceate a todo''' args = parser.parse_args() todo_id = 'todo%d' % (len(TODOS) + 1) TODOS[todo_id] = {'task': args['task']} return TODOS[todo_id], 201 if __name__ == '__main__': app.run(debug=True)
Documentation
The documentation is hosted on Read the Docs
Changelog
0.2.1
Allow to type custom fields with Api.model
Handle custom fields into fieds.List
0.2
Upgraded to SwaggerUI 0.2.22
Support additional field documentation attributes: required, description, enum, min, max and default
Initial support for model in RequestParser
0.1.3
Fix Api.marshal() shortcut
0.1.2
Added Api.marshal_with() and Api.marshal_list_with() decorators
Added Api.marshal() shortcut
0.1.1
Use zip_safe=False for proper packaging.
0.1
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file flask-restplus-0.2.1.tar.gz
.
File metadata
- Download URL: flask-restplus-0.2.1.tar.gz
- Upload date:
- Size: 178.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c67837795e9fdd784c70240a0f5172f64c64c4423c6971886569094525992cb |
|
MD5 | 6bcc380995a7620497d43a5993843149 |
|
BLAKE2b-256 | 374eca9f15b2c23c7c907c1e05ae795543bfcc1ae6663d52a628fd1cc847b081 |