aiorest
aiorest copied to clipboard
REST interface for server based on aiohttp (abandoned)
aiorest
The development has stopped, the project is abandoned.
JSON REST framework based on aiohttp (an asyncio (PEP 3156) http server).
.. image:: https://travis-ci.org/aio-libs/aiorest.svg?branch=master :target: https://travis-ci.org/aio-libs/aiorest
The project always was in experimental status: we have tried to make the proof
of concept for aiohttp
high level server.
Now the work is done, the most important parts transplanted to
aiohttp.web
: Request
and Response
.
Some aiorest
features are not supported by aiohttp.web
yet:
sessions, CORS and security.
We are working hard on the issue by making aiohttp
extension
libraries for those ones.
We will keep aiorest work on top of aiohttp new versions for a while.
Please report about incompatibility bugs to aiorest github issue tracker -- we'll fix those.
Example usage
Simple REST server can be run like this::
import asyncio import aiohttp import aiorest
define a simple request handler
which accept no arguments
and responds with json
def hello(request): return {'hello': 'world'}
loop = asyncio.get_event_loop() server = aiorest.RESTServer(hostname='127.0.0.1', loop=loop)
configure routes
server.add_url('GET', '/hello', hello)
create server
srv = loop.run_until_complete(loop.create_server( server.make_handler, '127.0.0.1', 8080))
@asyncio.coroutine def query(): resp = yield from aiohttp.request( 'GET', 'http://127.0.0.1:8080/hello', loop=loop) data = yield from resp.read_and_close(decode=True) print(data)
loop.run_until_complete(query()) srv.close() loop.run_until_complete(srv.wait_closed()) loop.close()
this will print {'hello': 'world'}
json
See examples <https://github.com/aio-libs/aiorest/tree/master/examples>
_ for more.
Requirements
-
Python 3.3
-
asyncio http://code.google.com/p/tulip/ or Python 3.4+
-
aiohttp http://github.com/KeepSafe/aiohttp
-
optional module
aiorest.redis_session
requires aioredis https://github.com/aio-libs/aioredis
License
aiorest is offered under the MIT license.