Requests es la única biblioteca HTTP sin OMG para Python, segura para el consumo humano.
Las solicitudes le permiten enviar solicitudes HTTP/1.1
orgánicas y alimentadas con pasto, sin la necesidad de trabajo manual. No hay necesidad de agregar manualmente cadenas de consulta a sus URL, o de codificar de forma sus datos POST. Keep-alive y la agrupación de conexiones HTTP son 100% automáticas, impulsadas por urllib3
, que está incrustada dentro de las solicitudes.
El poder de las solicitudes:
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.status_code 200 >>> r.headers['content-type'] 'application/json; charset=utf8' >>> r.encoding 'utf-8' >>> r.text u'{"type":"User"...' >>> r.json() {u'private_gists': 419, u'total_private_repos': 77, ...}
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.
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 solicitudes GET que puedan requerir autenticación básica, puede incluir el auth
autenticación de la siguiente manera:
response = requests.get('https://api.github.com/user', auth=('user', 'pass'))
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
Puede encontrar el código fuente actualizado en el repositorio de solicitudes 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 archivo comprimido ( -O
escribe la salida en el archivo; -L
sigue las redirecciones):
curl -OL https://github.com/kennethreitz/requests/tarball/master
Luego puedes instalarlo ejecutando setup.py
python setup.py install
Sin embargo, lo instaló, puede comenzar a usarlo importando de la manera habitual.
>>> import requests
>>> requests.get('http://stackoverflow.com')
El módulo de requests
tiene funciones de nivel superior 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)
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 de data
; requests
se codificarán en un cuerpo de tipo de application/x-www-form-urlencoded
:
r = requests.post('https://github.com/', data={"a": 1, "b": 2})
Si necesita POSTAR una carga json, puede usar json=
. Esto establecerá automáticamente el encabezado Content-Type en application/json
r = requests.post('https://github.com/', data={"a": 1, "b": 2})
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 que el usuario raise_for_status
compruebe si el código de estado era 4xx o 5xx y genera 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