Looking for python-requests Answers? Try Ask4KnowledgeBase
Looking for python-requests Keywords? Try Ask4Keywords

python-requestsComenzando con las solicitudes de python


Observaciones

HTTP para humanos

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, ...}

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.

Peticiones GET

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'))
 

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
 

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')
 

Otros métodos de solicitud

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)
 

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 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})
 

Leer 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 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