>  기사  >  백엔드 개발  >  파이썬 httpx를 사용하는 방법

파이썬 httpx를 사용하는 방법

WBOY
WBOY앞으로
2023-04-18 23:43:032948검색

Httpx란 무엇입니까

Httpx는 현대적이고 사용하기 쉬운 HTTP 클라이언트 및 서버를 제공하는 Python 라이브러리입니다. Httpx는 Python의 비동기 프레임워크와 함께 작동하며 WebSocket 및 HTTP/2를 지원합니다. Httpx는 다양한 프로토콜, 인코딩 및 인증 체계에 대해 탁월한 성능, 보안 및 유연한 구성을 제공합니다.

Httpx 설치

Httpx 라이브러리 설치는 매우 간단합니다. pip 패키지 관리자를 사용하여 다음 명령을 실행하세요:

pip install httpx

Python 3.7 이하를 사용하는 경우 Httpx의 비동기 종속성 aiohttp를 설치해야 합니다.

다음 명령을 실행하여 설치할 수 있습니다:

pip install httpx[aiohttp]

HTTP 요청 보내기

Httpx를 사용하여 HTTP 요청을 보내는 것은 매우 간단합니다. 다음은 Httpx를 사용하여 GET 요청을 보내는 간단한 예입니다.

import httpx

response = httpx.get('https://www.baidu.com')
print(response.status_code)
print(response.text)

이 예에서는 Httpx의 get 메서드를 사용하여 GET 요청을 보냈습니다. 요청한 URL은 https://www.baidu.com입니다. 이 메소드는 응답 상태 코드 및 응답 텍스트에 액세스하는 데 사용할 수 있는 Response 객체를 반환합니다.

Httpx는 GET, POST, PUT, DELETE, HEAD 및 OPTIONS를 포함한 다양한 HTTP 메서드를 지원합니다. Httpx 메서드를 사용하여 이러한 요청을 보낼 수 있습니다.

다음은 몇 가지 예입니다.

import httpx

response = httpx.post('https://www.baidu.com', data={'key': 'value'})
response = httpx.put('https://www.baidu.com', data={'key': 'value'})
response = httpx.delete('https://www.baidu.com')
response = httpx.head('https://www.baidu.com')
response = httpx.options('https://www.baidu.com')

위 예의 각 요청은 Httpx 메서드를 사용하여 보낼 수 있습니다. 이러한 메서드의 대부분은 데이터, 헤더, 쿼리 매개변수와 같은 매개변수 전달을 지원합니다.

비동기 HTTP 요청 보내기

Httpx는 비동기 HTTP 요청도 지원합니다. 다음은 Httpx를 사용하여 비동기 GET 요청을 보내는 간단한 예입니다.

import httpx
import asyncio

async def get_request():
    async with httpx.AsyncClient() as client:
        response = await client.get('https://www.baidu.com')
        print(response.status_code)
        print(response.text)

asyncio.run(get_request())

이 예에서는 Httpx의 AsyncClient 클래스를 사용하여 비동기 GET 요청을 보내는 get_request라는 비동기 함수를 만들었습니다. 비동기 함수에서는 async with 문을 사용하여 Httpx의 비동기 클라이언트를 만듭니다. 이런 방식으로 클라이언트를 생성하면 요청이 완료된 후 클라이언트가 자동으로 닫힙니다. 그런 다음 wait 키워드를 사용하여 응답을 비동기적으로 기다리고 응답 개체의 응답 상태 코드와 응답 텍스트에 액세스합니다.

동기 요청과 마찬가지로 Httpx의 비동기 클라이언트도 다양한 HTTP 메서드를 지원합니다.

다음은 몇 가지 예입니다.

import httpx
import asyncio

async def post_request():
    async with httpx.AsyncClient() as client:
        response = await client.post('https://www.baidu.com', data={'key': 'value'})
        print(response.status_code)
        print(response.text)

asyncio.run(post_request())

요청 헤더 설정

HTTP 요청을 보낼 때 일반적으로 요청 헤더를 설정해야 합니다. Httpx를 사용하면 요청 메서드에 headers 매개변수를 전달하여 요청 헤더를 설정할 수 있습니다.

예는 다음과 같습니다.

import httpx

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

response = httpx.get('https://www.baidu.com', headers=headers)
print(response.status_code)
print(response.text)

이 예에서는 headers 매개변수를 사용하여 User-Agent라는 요청 헤더를 설정합니다.

요청 매개변수 설정

Httpx를 사용하면 HTTP 요청을 보낼 때 요청 매개변수를 설정할 수 있습니다.

다음은 몇 가지 예입니다.

import httpx

params = {'key1': 'value1', 'key2': 'value2'}

response = httpx.get('https://www.baidu.com', params=params)
print(response.status_code)
print(response.text)

이 예에서는 params 매개변수를 사용하여 두 개의 쿼리 매개변수 key1과 key2를 설정합니다.

요청 본문 보내기

POST, PUT, DELETE 요청을 보낼 때 일반적으로 요청 본문에 데이터를 포함해야 합니다. Httpx를 사용하면 data 매개변수를 사용하여 요청 본문에 데이터를 설정할 수 있습니다.

예는 다음과 같습니다.

import httpx

data = {'key': 'value'}

response = httpx.post('https://www.baidu.com', data=data)
print(response.status_code)
print(response.text)

이 예에서는 data 매개변수를 사용하여 key라는 요청 본문 매개변수를 설정합니다.

JSON 데이터 보내기

Httpx를 사용하면 json 매개변수를 사용하여 JSON 데이터를 보낼 수 있습니다.

예는 다음과 같습니다.

import httpx

data = {'key': 'value'}

response = httpx.post('https://www.baidu.com', json=data)
print(response.status_code)
print(response.text)

이 예에서는 json 매개변수를 사용하여 key라는 JSON 요청 본문 매개변수를 설정합니다.

시간 초과 설정

HTTP 요청을 보낼 때 일반적으로 시간 초과를 설정해야 합니다. Httpx를 사용하면 timeout 매개변수를 사용하여 시간 초과를 설정할 수 있습니다.

예는 다음과 같습니다.

import httpx

response = httpx.get('https://www.baidu.com', timeout=5)
print(response.status_code)
print(response.text)

이 예에서는 timeout 매개변수를 사용하여 시간 제한을 5초로 설정했습니다.

오류 처리

Httpx는 다양한 유형의 예외를 발생시켜 문제를 진단하고 해결하는 데 도움을 줄 수 있습니다. 다음은 몇 가지 일반적인 예외입니다.

  • httpx.HTTPError: HTTP 오류가 발생할 때 발생합니다.

  • httpx.RequestError: 요청 오류가 발생할 때 발생합니다.

  • httpx.NetworkError: 네트워크 오류가 발생할 때 발생합니다.

  • httpx.TimeoutException: 시간 초과가 발생하면 발생합니다.

이러한 예외를 처리할 때 try/제외 문을 사용하여 예외를 포착하고 적절한 조치를 취할 수 있습니다. 예는 다음과 같습니다.

import httpx

try:
    response = httpx.get('https://www.baidu.com')
    response.raise_for_status()
except httpx.HTTPError as http_error:
    print(f'HTTP error occurred: {http_error}')
except httpx.RequestError as request_error:
    print(f'Request error occurred: {request_error}')
except httpx.NetworkError as network_error:
    print(f'Network error occurred: {network_error}')
except httpx.TimeoutException as timeout_error:
    print(f'Timeout error occurred: {timeout_error}')
else:
    print(response.status_code)
    print(response.text)

이 예에서는 try/Exception 문을 사용하여 가능한 모든 예외를 포착하고 예외 유형에 따라 적절한 조치를 취했습니다.

인증서 확인

Httpx를 사용하면 SSL 인증서를 확인하여 서버에 대한 보안 연결을 보장할 수 있습니다. 기본적으로 Httpx는 SSL 인증서를 확인합니다. 인증서 확인을 비활성화해야 하는 경우 verify 매개변수를 False로 설정할 수 있습니다.

예는 다음과 같습니다.

import httpx

response = httpx.get('https://www.baidu.com', verify=False)
print(response.status_code)
print(response.text)

이 예에서는 SSL 인증서 확인을 비활성화하기 위해 verify 매개변수를 False로 설정했습니다.

프록시 사용

Httpx를 사용하면 프록시를 사용하여 HTTP 요청을 보낼 수 있습니다. 예는 다음과 같습니다.

import httpx

proxies = {
    'http://http-proxy-server:8080',
    'https://https-proxy-server:8080'
}

response = httpx.get('https://www.baidu.com', proxies=proxies)
print(response.status_code)
print(response.text)

이 예에서는 proxies 매개변수를 사용하여 두 개의 프록시 서버를 설정했습니다.

파일 업로드

Httpx를 사용하면 파일 매개변수를 사용하여 파일을 업로드할 수 있습니다. 예는 다음과 같습니다.

import httpx

files = {'file': ('file.txt', open('file.txt', 'rb'))}

response = httpx.post('https://www.baidu.com', files=files)
print(response.status_code)
print(response.text)

在这个示例中,我们使用 files 参数上传了名为 file.txt 的文件。

使用 Cookie

Httpx 允许您使用 cookies 参数发送 cookie。以下是一个示例:

import httpx

cookies = {'name': 'value'}

response = httpx.get('https://www.baidu.com', cookies=cookies)
print(response.status_code)
print(response.text)

在这个示例中,我们使用 cookies 参数发送了名为 name 的 cookie。

위 내용은 파이썬 httpx를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제