Requests GET y POST usando Python

Esta publicación analiza dos métodos de solicitud HTTP (Protocolo de transferencia de hipertexto) requests GET y POST en Python y su implementación en Python.

¿Qué es HTTP?
HTTP es un conjunto de protocolos diseñados para permitir la comunicación entre clientes y servidores. Funciona como un protocolo de solicitud-respuesta entre un cliente y un servidor.
Un navegador web puede ser el cliente y una aplicación en una computadora que aloja un sitio web puede ser el servidor.

Entonces, para solicitar una respuesta del servidor, existen principalmente dos métodos:

  1. GET : para solicitar datos del servidor.
  2. POST : para enviar datos a ser procesados ​​al servidor.

Aquí hay un diagrama simple que explica el concepto básico de los métodos GET y POST. iservice_post_get
Ahora, para realizar requests HTTP en python, podemos usar varias bibliotecas HTTP como:

La más elegante y simple de las bibliotecas mencionadas anteriormente es Requests. Usaremos la biblioteca de requests en este artículo. Para descargar e instalar la biblioteca de requests, use el siguiente comando:

pip install requests

O bien, descárguelo desde aquí e instálelo manualmente.

Hacer una solicitud de obtención

# importing the requests library
import requests
  
# api-endpoint
URL = "http://maps.googleapis.com/maps/api/geocode/json"
  
# location given here
location = "delhi technological university"
  
# defining a params dict for the parameters to be sent to the API
PARAMS = {'address':location}
  
# sending get request and saving the response as response object
r = requests.get(url = URL, params = PARAMS)
  
# extracting data in json format
data = r.json()
  
  
# extracting latitude, longitude and formatted address 
# of the first matching location
latitude = data['results'][0]['geometry']['location']['lat']
longitude = data['results'][0]['geometry']['location']['lng']
formatted_address = data['results'][0]['formatted_address']
  
# printing the output
print("Latitude:%s\nLongitude:%s\nFormatted Address:%s"
      %(latitude, longitude,formatted_address))

Python-Foundation-Course

Producción:
GET-and-POST-requests-using-Python

El ejemplo anterior encuentra la latitud, la longitud y la dirección formateada de una ubicación determinada mediante el envío de una solicitud GET a la API de Google Maps. Una API (interfaz de programación de aplicaciones) le permite acceder a las funciones internas de un programa de forma limitada. Y en la mayoría de los casos, los datos proporcionados están en formato JSON (Notación de objetos de JavaScript) (¡que se implementa como objetos de diccionario en Python!).

Puntos importantes a inferir:

  • PARAMS = {'address':location}

    La URL para una solicitud GET generalmente lleva consigo algunos parámetros. Para la biblioteca de requests, los parámetros se pueden definir como un diccionario. Estos parámetros se analizan posteriormente y se agregan a la URL base o al punto final de API.
    Para comprender la función de los parámetros, intente imprimir r.url después de crear el objeto de respuesta. Verás algo como esto:

    http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technological+university

    Esta es la URL real en la que se realiza la solicitud GET

  • r = requests.get(url = URL, params = PARAMS)

    Aquí creamos un objeto de respuesta ‘r’ que almacenará la solicitud-respuesta. Usamos el método request.get() ya que estamos enviando una solicitud GET. Los dos argumentos que pasamos son url y el diccionario de parámetros.

  • data = r.json()

    Ahora, para recuperar los datos del objeto de respuesta, necesitamos convertir el contenido de respuesta sin procesar en una estructura de datos de tipo JSON. Esto se logra utilizando el método json(). Finalmente, extraemos la información requerida analizando el objeto de tipo JSON.

Hacer una solicitud POST

# importing the requests library
import requests
  
# defining the api-endpoint 
API_ENDPOINT = "http://pastebin.com/api/api_post.php"
  
# your API key here
API_KEY = "XXXXXXXXXXXXXXXXX"
  
# your source code here
source_code = '''
print("Hello, world!")
a = 1
b = 2
print(a + b)
'''
  
# data to be sent to api
data = {'api_dev_key':API_KEY,
        'api_option':'paste',
        'api_paste_code':source_code,
        'api_paste_format':'python'}
  
# sending post request and saving response as response object
r = requests.post(url = API_ENDPOINT, data = data)
  
# extracting response text 
pastebin_url = r.text
print("The pastebin URL is:%s"%pastebin_url)

Este ejemplo explica cómo pegar su código fuente en pastebin.com enviando una solicitud POST a la API de PASTEBIN.
En primer lugar, deberá generar una clave API registrándose aquí y luego acceder a su clave API aquí.

Características importantes de este código:

  • data = {'api_dev_key':API_KEY,
            'api_option':'paste',
            'api_paste_code':source_code,
            'api_paste_format':'python'}

    Aquí nuevamente, necesitaremos pasar algunos datos al servidor API. Almacenamos estos datos como un diccionario.

  • r = requests.post(url = API_ENDPOINT, data = data)

    Aquí creamos un objeto de respuesta ‘r’ que almacenará la solicitud-respuesta. Usamos el método request.post() ya que estamos enviando una solicitud POST. Los dos argumentos que pasamos son url y el diccionario de datos.

  • pastebin_url = r.text

    En respuesta, el servidor procesa los datos que se le envían y envía la URL pastebin de su código_fuente , a la que se puede acceder fácilmente mediante r.text .

El método request.post podría usarse para muchas otras tareas, así como para completar y enviar formularios web, publicar en su línea de tiempo de FB usando la API Graph de Facebook, etc.

Aquí hay algunos puntos importantes para reflexionar:

  • Cuando el método es GET, todos los datos del formulario se codifican en la URL y se agregan a la URL de acción como parámetros de string de consulta. Con POST, los datos del formulario aparecen dentro del cuerpo del mensaje de la solicitud HTTP.
  • En el método GET, los datos de los parámetros se limitan a lo que podemos introducir en la línea de solicitud (URL). Es más seguro usar menos de 2K de parámetros, algunos servidores manejan hasta 64K. No hay tal problema en el método POST ya que enviamos datos en el cuerpo del mensaje de la solicitud HTTP, no en la URL.
  • Solo se permiten caracteres ASCII para enviar datos en el método GET. No existe tal restricción en el método POST.
  • GET es menos seguro en comparación con POST porque los datos enviados son parte de la URL. Por lo tanto, el método GET no debe usarse al enviar contraseñas u otra información confidencial.

Este blog es una contribución de Nikhil Kumar . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *