Micro.Rest¶
Create autodocumented REST APIs with built-in validation. Created on top of Micro.Web
Getting started¶
Full featured example - redis-backed FIFO queue
import asyncio import aioredis from micro.web import Micro from micro.rest import rest, templated_docstring, make_api FIFO_ITEM = """ object { string {1,5000} item `An item`; } -> FIFOItem; """ class Items: app = Micro() @rest() @app.route("/", method="GET") @templated_docstring(output=FIFO_ITEM) @asyncio.coroutine def get_item(self, request): """ Get last item from FIFO queue @summary Get last item from FIFO queue @operation_id Item_get @output 200 $output """ queue_name, item = yield from request.app['redis'].blpop('_QUEUE') return item.decode('utf-8') @rest() @app.route("/", method="POST") @templated_docstring(input=FIFO_ITEM) @asyncio.coroutine def put_item(self, request): """ Put the item into FIFO queue @summary Put the item into FIFO queue @operation_id Item_put @input $input @output 204 """ request_json = yield from request.json() yield from request.app['redis'].rpush( '_QUEUE', request_json['item'].encode('utf-8') ) class Root: app = Micro() def __init__(self): self.app.mount("/item", Items()) @asyncio.coroutine def init(): root.app['redis'] = yield from aioredis.create_pool( ('localhost', 6379), minsize=5, maxsize=10 ) return make_api(root.app, name='FIFOQueue', description='A redis-backed FIFO queue', version='1') if __name__ == '__main__': api = asyncio.get_event_loop().run_until_complete(init()) api.debug()
Dependencies¶
- Micro.Web
- Hipchat.Orderly
- jsonschema