patch请求_Python-Http请求库-Requests and AIOHTTP的使用

patch请求_Python-Http请求库-Requests and AIOHTTP的使用_第1张图片

首先对库进行安装:

pip install aiohttp[speedups]
pip install requests

一、Requests库

Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。

import requests
r = requests.get('https://api.github.com/events')
r = requests.post('http://httpbin.org/post', data = {'key':'value'})
r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get') 
r = requests.options('http://httpbin.org/get')

现在,我们有一个名为rResponse对象。我们可以从这个对象中获取所有我们想要的信息。常用的有以下内容:

content

响应的内容,以字节为单位。

cookies

服务器发送回的Cookie的CookieJar。

encoding

访问r.text时进行编码以进行解码。

headers

不区分大小写的响应标题字典。例如, headers['content-encoding']将返回 'Content-Encoding'响应头的值。

history

Response请求历史记录中的对象列表。任何重定向响应都将在此处结束。该列表从最早的请求到最新的请求进行排序。

status_code

响应的HTTP状态的整数代码,例如404或200。

text

响应的内容,以unicode表示。

url

响应的最终URL位置。

请求会话:(提供cookie持久性,连接池和配置)

基础用法:

import requests
s = requests.Session()
s.get('http://httpbin.org/get') # 

或作为上下文管理器:

with requests.Session() as s: 
   s.get('http://httpbin.org/get') #

二、AIOHTTP

用于asyncio和Python的异步HTTP客户端/服务器。

主要功能:

  • 同时支持客户端和HTTP Server。
  • 开箱即用地支持服务器WebSocket和 客户端WebSocket,而没有回调地狱。
  • Web服务器具有中间件, 信号和可插入路由。

客户示例:

import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        html = await fetch(session, 'http://python.org')
        print(html)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

服务器示例:

from aiohttp import web

async def handle(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(text=text)

app = web.Application()
app.add_routes([web.get('/', handle),
                web.get('/{name}', handle)])

if __name__ == '__main__':
    web.run_app(app)

发送请求:

import aiohttp

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

#同样有以下几种请求
session.post('http://httpbin.org/post', data=b'data')
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')

三、Requests与AIOhttp对比

在发送请求上,Requests为同步库,而AIOHttp为异步库

具体的效率对比可参考:

aiohttp与requests效率对比​www.jianshu.com
patch请求_Python-Http请求库-Requests and AIOHTTP的使用_第2张图片

AIOhttp是AIO家族非常出色的一个库,AIO异步家族发展非常迅猛,近年来又支持了异步HTTP客户端/服务器,发展前途一片光明。

你可能感兴趣的:(patch请求,python,requests返回值为200,但是text无内容)