首页 > 解决方案 > 使用aiohttp,将响应体解析为动态类型

问题描述

我的目标是从调用的返回值中动态解析 HTTP 响应正文aiohttp.ClientSession.get。是否有实现此目的的内置方法?在下面的例子中,我实现了这个逻辑:

import aiohttp
import asyncio
async def get_req(url, parse_as='json', params=None):
    async with aiohttp.ClientSession() as session:
        async with session.get(url, params=params) as r:
            parse_methods = {
                'json': r.json,
                'binary': r.read,
                'text': r.text
            }
            target_method = parse_methods.get(parse_as)
            return await target_method()
asyncio.run(get_req('<some_link>', 'text')) # Will return text data from body of response.

我的大脑告诉我这不是最好的方法,但到目前为止,我还没有找到任何示例来解释如何为aiohttp.ClientSession的 HTTP 方法设置动态解析类型。我想将会话保持在aiohttp本地get_req

我的总体问题是:如何以更易读和更有效的方式实现此逻辑?

标签: python-3.xparsingasynchronousconcurrencyaiohttp

解决方案


推荐阅读