web-dev-qa-db-fra.com

corps aiohttp web.response en tant que json

J'ai un serveur HTTP sur aiohttp avec python-3.6 . Comment puis-je retourner web.Response() via JSON (à partir d'un dict)?

async def api_server(request):
    res = {"q": "qqq", "a": "aaa"}
    return web.Response(res) # <-- as JSON
24
morfair

Vous pouvez utiliser web.json_response :

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

De plus, le json_response A des paramètres supplémentaires, comme:

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

La plupart des paramètres sont les mêmes que la générique web.Response(..), mais la dumps est plus intéressante: c'est une référence à une méthode qui convertit les données en son équivalent JSON. Par défaut, il utilise json.dumps. Si vous prévoyez cependant d'écrire des objets complexes sur le client, vous devriez peut-être modifier cela. Pour l'instant, c'est bien.

27
Willem Van Onsem