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