Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

aiohttp web.response body as json

I have HTTP server on aiohttp with python-3.6. How can I return web.Response() through JSON (from a dict)?

async def api_server(request):
    res = {"q": "qqq", "a": "aaa"}
    return web.Response(res) # <-- as JSON
like image 632
morfair Avatar asked Jul 20 '17 14:07

morfair


1 Answers

You can use web.json_response:

async def api_server(request):
    res = {"q": "qqq", "a": "aaa"}
    return web.json_response(res)

Furthermore the json_response has additional parameters, like:

json_response(data, text=None, body=None, status=200, reason=None,
              headers=None, content_type='application/json', dumps=json.dumps)

Most of the parameters are the same as the generic web.Response(..), but the dumps is more interesting: it is a reference to a method that converts data into its JSON equivalent. By default it uses json.dumps. If you however plan to write complex objects to the client, you perhaps should alter that. For now it is fine however.

like image 108
Willem Van Onsem Avatar answered Oct 17 '22 00:10

Willem Van Onsem