Primeros pasos con las solicitudes de python

Instalación o configuración

python-requests está disponible en PyPI, el índice de paquetes de Python, lo que significa que se puede instalar a través de pip:

pip install requests

El código fuente actualizado se puede encontrar en solicita el repositorio de GitHub

Si desea instalarlo desde la fuente, puede hacerlo clonando el repositorio de GitHub:

git clone git://github.com/kennethreitz/requests.git

O obteniendo el tarball (-O escribe la salida en el archivo; -L sigue las redirecciones):

curl -OL https://github.com/kennethreitz/requests/tarball/master

Luego puede instalarlo ejecutando setup.py

python setup.py install

Independientemente de cómo lo haya instalado, puede comenzar a usarlo importándolo de la forma habitual

>>> import requests
>>> requests.get('http://stackoverflow.com')

OBTENER solicitudes

requests.get() crea una solicitud GET:

response = requests.get('https://example.com/')

Pase los parámetros de consulta como un diccionario al argumento params:

response = requests.get('https://example.com/', params={"a": 1, "b": 2})

Para las solicitudes GET que pueden requerir autenticación básica, puede incluir el parámetro auth de la siguiente manera:

response = requests.get('https://api.github.com/user', auth=('user', 'pass'))

Solicitudes POST

Las solicitudes POST se realizan con el método request.post().

Si necesita enviar una solicitud de formulario web como un cuerpo POST, pase un diccionario con pares clave-valor como argumento datos; requests los codificará en un cuerpo de tipo mime application/x-www-form-urlencoded:

r = requests.post('https://github.com/', data={"a": 1, "b": 2})

Si necesita PUBLICAR una carga json, puede usar json=. Esto establecerá automáticamente el encabezado de tipo de contenido en application/json

r = requests.post('https://github.com/', data={"a": 1, "b": 2})

Otros métodos de solicitud

El módulo requests tiene funciones de alto nivel para la mayoría de los métodos HTTP:

r = requests.put('https://example.com/', data=put_body)
r = requests.delete('https://example.com/')
r = requests.head('https://example.com/')
r = requests.options('https://example.com/')
r = requests.patch('https://example.com/', data=patch_update)

Leyendo la respuesta

response = requests.get("https://api.github.com/events")
text_resp = response.text

Respuesta JSON: para respuestas con formato json, el paquete proporciona un decodificador incorporado

response = requests.get('https://api.github.com/events')
json_resp = response.json()

Este método generará un ValueError en caso de respuesta vacía o contenido no analizable.

Lectura de códigos de estado

El atributo status_code contiene el código de estado de la respuesta

good_req = requests.get('https://api.github.com/events')
code_200 = good_req.status_code

notfound_req = requests.get('https://api.github.com/not_found')
code_404 = notfound_req.status_code

requests.codes.__dict__ proporcionará una lista de códigos de estado http disponibles.

Es posible usar raise_for_status para verificar si el código de estado era 4xx o 5xx y generar la excepción correspondiente en ese caso.

good_req = requests.get('https://api.github.com/events')
good_req.raise_for_status()
# is a 200 status code so nothing happens

notfound_req = requests.get('https://api.github.com/not_found')
notfound_req.raise_for_status()
# raises requests.exceptions.HTTPError: 404 Client Error