aiohttp官方教程翻译(2)—— 客户端编程之快速开始

Client Quickstart


1、Make a Request(制作一个请求)

首先导入库

import aiohttp
import asyncio

然后,让我们尝试获取一个网页页面。例如,访问 http://httpbin.org/get,运行以下代码,可以获得访问的数据:

import aiohttp
import asyncio

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get('http://httpbin.org/get') as resp:
            print(resp.status)
            print(await resp.text())


loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.run_forever()

现在,我们有了一个客户端时域称作session,有了一个客户端响应称作resp,我们可以从响应中得到我们想要的信息,ClientSession.get()协程的参数是这个HTTP url(即上面中的url)

为了使用HTTP的post请求,使用协程ClientSession.post():

session.post('http://httpbin.org/post', data=b'data')

其他的HTTP方法也是可以使用的:

session.put('http://httpbin.org/put', data=b'data')
session.delete('http://httpbin.org/delete')
session.head('http://httpbin.org/get')
session.options('http://httpbin.org/get')
session.patch('http://httpbin.org/patch', data=b'data')

注意:
        请不要每个request都创建一个session,这是一个不好的习惯,应该一个session对应多个request。每一个session都包含一个连接,复用连接可以提高速度与效率。

一个session上下文管理器不是必须的,但是在下面这种情况下是需要的:

session = aiohttp.ClientSession()
async with session.get('...'):
    # ...
await session.close()

2、Passing Parameters In URLs(在URLs中传递参数)

例如,如果你想传递key1=value1和key2=value2到httpbin.org/get,你可以使用一个字典通过以下代码实现:

params = {
   'key1': 'value1', 'key2': 'value2'}
async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get('http://httpbin.org/get',params=params) as resp:
            expect1 = 'http://httpbin.org/get?key2=value2&key1=value1'
            if str(resp.url) == expect1:
                print(1)
            else:
                print(0)
            expect2 = 'http://httpbin.org/get?key1=value1&key2=value2'
            if str(resp.url) == expect2:
                print(1)
            else:
                print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值