logo

Solicitudes GET y POST usando Python

Esta publicación analiza dos métodos de solicitud HTTP (Protocolo de transferencia de hipertexto): solicitudes 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. CONSEGUIR : Para solicitar datos del servidor.
  2. CORREO : Para enviar datos para ser procesados ​​al servidor.

Aquí hay un diagrama simple que explica el concepto básico de los métodos GET y POST.



Solicitudes GET y POST usando Python' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 Ahora para realizar solicitudes HTTP en Pitón Podemos usar varias bibliotecas HTTP como:

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

pip install requests

Realizar una solicitud de obtención

El ejemplo anterior encuentra la latitud, longitud y dirección formateada de una ubicación determinada enviando una solicitud GET a la API de Google Maps. Un 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 JSON (notación de objetos JavaScript) formato (que se implementa como objetos de diccionario en Python).

Python
# 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:%snLongitude:%snFormatted Address:%s' %(latitude longitudeformatted_address)) 

Producción:

Solicitudes GET y POST usando Python

Puntos importantes a inferir:

PARAMS = {'address':location}

La URL para una solicitud GET generalmente lleva consigo algunos parámetros. Para las solicitudes, los parámetros de la biblioteca se pueden definir como un diccionario. Posteriormente, estos parámetros se analizan y se agregan a la URL base o al punto final de la API. Para comprender el papel del parámetro 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 enviamos una solicitud GET. Los dos argumentos que pasamos son la URL y el diccionario de parámetros.

data = r.json()

Ahora, para recuperar los datos del objeto de respuesta, necesitamos convertir el contenido de la 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.

Realizar una solicitud POST

Este ejemplo explica cómo pegar su código_fuente a pastabin.com enviando una solicitud POST a la API PASTEBIN. En primer lugar, deberá generar una clave API mediante registrándote aquí y luego acceder a su Clave API aquí.  

Python
# importing the requests library import requests # defining the api-endpoint API_ENDPOINT = 'https://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) 

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 enviamos una solicitud POST. Los dos argumentos que pasamos son la 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 el pastebin_URL de su código_fuente a la que se puede acceder simplemente mediante r.texto.

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

Aquí hay algunos puntos importantes sobre los que reflexionar:

  • Cuando el método es GET, todos los datos del formulario se codifican en la URL y se agregan al acción URL como parámetros de cadena de consulta. Con el formulario POST los datos aparecen dentro del cuerpo del mensaje de la solicitud HTTP.
  • En el método GET, los datos del parámetro se limitan a lo que podemos incluir en la línea de solicitud (URL). Lo más seguro es usar menos de 2 K de parámetros, algunos servidores manejan hasta 64 K. No hay tal problema en el método POST ya que enviamos datos en el cuerpo del mensaje de la solicitud HTTP, no la URL.
  • Sólo 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 utilizarse al enviar contraseñas u otra información confidencial.
Crear cuestionario