No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
20 Hrs
21 Min
11 Seg

Solicitudes HTTP con Requests

12/20
Recursos

Aportes 49

Preguntas 12

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola Chicos! 😄

  • Crear un entorno
python3 -m venv env
  • Activar un entorno virtual
source env/bin/activate
  • Verificar que estemos dentro del entorno virtual
which python3
  • Instalar la dependencia dentro del entorno virtual
pip3 install requests
  • Verificar la instalacion
pip3 freeze
  • Crear el archivo para que cualquier persona pueda desplegar el proyecto
pip freeze > requeriments.txt

STORE

import requests

def get_categories():
    r = requests.get('https://api.escuelajs.co/api/v1/categories')
    print(r.status_code)
    print(r.text)
    print(type(r.text))
    categories = r.json()
    for category in categories:
        print(category['name'])

MAIN

import store

def run():
    store.get_categories()

if __name__ == '__main__':
    run()

Les recomendaré una buena práctica, en el archivo de store py declaren la url como una variable:

import requests

api_url_categories = 'https://api.escuelajs.co/api/v1/categories'


def get_categories():
    r = requests.get(api_url_categories)
    print(f'Status code: {r.status_code}')
    print(f'Text: {r.text}')
    print(f'type: {type(r.text)}')
    categories = r.json()
    for category in categories:
        print(category['name'])

Incluso pueden tener un archivo de Python donde solamente guarden las urls que vayan a llamar y hacen import de las variables o constantes de ese archivo y así es más fácil tener todo en 1 solo lugar.

Link de Platzi Fake Store API:

https://fakeapi.platzi.com/

Si te aparece la api así:

Puedes agregar la extensión de google JSON Viewer para que se vea así:

Solo entra en el enlace y selecciona la opción Agregar extesión.

  • Las solicitudes HTTP son mensajes enviados por un cliente a un servidor para solicitar información o enviar datos al servidor. La biblioteca de solicitudes es una biblioteca popular de Python para realizar solicitudes HTTP. Con la biblioteca de solicitudes, puede enviar solicitudes HTTP utilizando Python.

  • Este es un ejemplo de cómo utilizar la biblioteca de solicitudes para realizar una solicitud GET a un sitio web:

import requests

response = requests.get('https://www.example.com')

print(response.status_code)
print(response.text)

  • La primera línea importa la biblioteca de Solicitudes. La segunda línea envía una solicitud GET al sitio web https://www.example.comy almacena la respuesta en la responsevariable. La responsevariable es una instancia de la Responseclase, que contiene la respuesta del servidor a la solicitud.

  • El status_codeatributo del Responseobjeto contiene el código de estado de la respuesta, como 200 para una solicitud exitosa o 404 para un error de página no encontrada. El textatributo contiene el cuerpo de la respuesta como una cadena.

También puede usar la biblioteca de Solicitudes para enviar otros tipos de solicitudes HTTP, como POST, PUT, DELETE, etc.

Genial, es el primer curso que me toca sin aportes, saludos comunidad !

Por si les surge la duda de que es un JSON como a mí
Una API es una sección del backend que permite que el frontend pueda comunicarse con él a través de mensajes bidireccionales (de ida y vuelta)…

Para crear estas hay 2 estandares…

llamado SOAP(Simple Object Acces Protocol)
mueve la info. basado en XML

y otro basado en REST(Representational State Transfer)

El lenguaje que usa este es el JSON

este asu vez no es mas que un
*Formato de texto sencillo para el intercambio de datos

parecido a un diccionario de python o aun objeto de Javascript

Esta clase me hizo pensar en la opción que tenemos para obtener datos también con web scraping, y encontre dos cursos en platzi que ya quedan agregados a la ruta:

https://platzi.com/cursos/webscraping/
https://platzi.com/cursos/web-scraping/

pip env es una gran herramienta para crear entornos. Pero cuando el volumen de proyectos crece se vuelve difícil administralos, por eso recomiendo aprender a trabajar con Conda (que es últil tanto para proyectos de Data Science como para proyectos de Backend). El curso de Jesús te enseña a usarlo. https://platzi.com/cursos/jupyter-notebook/

Para los que no saben porque usamos status_code y no otro nombre

r.status_code <---- aquí hacemos una llamada al atributo del objeto

si queremos conocer todos los atributos con sus respectivos valores en un diccionario:

print(r.dict) o podemos usar el metodo vars print(vars®)

tambien esta la funcion dir

print(dir®) <---- esta regresa todos los atributos del objeto sin los valores

Saludos!!!

Que hace if name == ‘main’ ?

PD: dot = punto
El código en main(dot)py llama a la función get_categories() del módulo store. El if __name__ == '__main__': asegura que la función get_categories() solo se llame si main(dot)py se está ejecutando como el archivo principal y no cuando se importa como un módulo en otro script. Entonces, el if verifica si el archivo es el archivo principal y solo ejecuta la función si es así.

Como no tenia muy claro lo que es una API, le pregunte a PlazitBot y esta fue su muy clara respuesta:
Una API (Application Programming Interface) es un conjunto de reglas y protocolos que permiten a diferentes aplicaciones comunicarse entre sí. En otras palabras, una API es una interfaz que permite a los desarrolladores acceder a los datos y funcionalidades de una aplicación o servicio de manera programática.

Mis Apuntes:
.
Solicitudes HTTP con requests:

Vamos a usar la librería requests, que es na biblioteca HTTP para el lenguaje de programación Python. El objetivo del proyecto es hacer que las solicitudes HTTP sean más simples y amigables para los humanos.
.
-Usando request:

  1. Creamos un módulo importando requests y para hacer la función que nos de todos los datos y transformarlos a una lista
    .
    Código:
import requests

def get_categories():
    r = requests.get('https://api.escuelajs.co/api/v1/categories')
    print(r.status_code)
    print(r.text)
    categories = r.json()
    for category in categories:
        print(category['name'])

Explicación del código:
.

Y para entender bien lo que es requests, le pregunte al Platzibots y su respuesta fue:
En el contexto de una API, un request (petición) es una solicitud que una aplicación hace a la API para obtener datos o realizar una acción específica. Por ejemplo, si una aplicación necesita obtener los datos de un usuario en una red social, puede hacer una petición a la API de esa red social para obtener esos datos.

También le pregunte acerca de un servicio, porque veo que el Profe hizo referencia a la palabra “servicio” en vez de api y su respuesta fue:
¡Exactamente! Una API puede considerarse como un servicio que ofrece una aplicación o plataforma para que otras aplicaciones puedan acceder a sus datos y funcionalidades de manera programática. De esta manera, las aplicaciones pueden integrarse y comunicarse entre sí de manera más eficiente y automatizada.

me encanto este ultimo diccionario:

{"id":17,"name":"no joda","image":"https://placeimg.com/640/480/any"}

hoy dias tambien creo que es importante saber que podemos usar pipenv

aquí también otra pagina de API’s para practicar:
https://random-data-api.com/documentation
ahí le compran un café de mi parte XD !!

Una clase super interesante!!! Muy util para obtener datos paraluego analizarlos!

Esta clase estuvo genial!

Siempre me es emocionante tocar una API.
Ya sea con axios, postan, requests. Siempre es divertido ver todo el contenido que le ponen a los json

Excelente esa dinámica entre los profesores y el trabajo colaborativo!
![](https://static.platzi.com/media/user_upload/image-1c721f88-bfa1-4c29-8f0b-d92fc1963601.jpg)no se pq no se esta importando
Tremenda esta clase....!!!
En el caso de Windows para activar el ambiente virtual es: ```js source env/Scripts/activate ```
Para quienes tengan problemas trabajando con la versión requests==2.32.3 de Request al instalarlo en el entorno virtual, la solución que encontré fue instalarlo de forma global.
Las solicitudes HTTP con la librería `requests` en Python son fundamentales porque permiten interactuar con servicios web de manera sencilla y eficiente. Aquí hay algunas razones clave de su importancia: 1. **Comunicación con APIs**: Muchas aplicaciones modernas se integran con APIs (Application Programming Interfaces) para obtener datos, realizar operaciones o enviar información. Usar `requests` facilita la interacción con estas APIs, lo que es crucial para acceder a recursos en línea, como bases de datos, servicios en la nube, o aplicaciones web. 2. **Facilidad de Uso**: La librería `requests` es conocida por su simplicidad y legibilidad. Hace que las solicitudes HTTP sean fáciles de manejar en Python, sin necesidad de escribir código complejo o manejar bajos niveles de detalles del protocolo HTTP. 3. **Compatibilidad y Estabilidad**: `requests` es una librería ampliamente utilizada y mantenida, lo que garantiza su estabilidad y compatibilidad con una gran variedad de APIs y servicios web. Además, se actualiza regularmente para adaptarse a nuevas versiones de Python y estándares de seguridad. 4. **Manejo de Respuestas y Errores**: Con `requests`, puedes manejar fácilmente las respuestas del servidor, interpretar códigos de estado HTTP, y manejar errores o excepciones que puedan ocurrir durante la comunicación. Esto es crucial para asegurarte de que tu aplicación funcione de manera confiable incluso en condiciones adversas. 5. **Soporte para Diferentes Métodos HTTP**: La librería `requests` soporta todos los métodos HTTP principales (GET, POST, PUT, DELETE, etc.), permitiendo una interacción completa con servicios web según sea necesario. 6. **Manejo de Sesiones y Cookies**: `requests` también ofrece funcionalidades avanzadas como el manejo de sesiones, persistencia de cookies, y autenticación, que son esenciales para interactuar con sitios web o APIs que requieren mantener un estado o autenticación continua. En resumen, el uso de `requests` es esencial para cualquier desarrollo que involucre la comunicación con servicios web, ya que simplifica y hace más robusto el proceso de enviar y recibir datos a través de HTTP.
import requests url = "https://api.escuelajs.co/api/v1/categories"r = requests.get(url)data = r.json()print(data)for i in data:    print(i\["name"])    print("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*")
Excelente clase ejemplo sencillo para entender
Les recomiendo muchísimo esta lectura: <https://realpython.com/python-requests/>
Se que este curso ya tiene su tiempo, lo mas rapido y funcional creo yo en este momento es usar pipenv

Me gusto esta leccion con respecto a usar los elementos request en nuestro programa de python. Es muy interesante su ecosistema. A seguir aprendiendo.

![](https://ugye-my.sharepoint.com/:i:/g/personal/mario_luzardof_ug_edu_ec/EVtkdK0_8k5Ki17QpnLJRqoBx8jb_GsDxTEwiZcgNCumPQ?e=pa2L6v)tengo un problema, y es que a pesar de haber hecho todo el proceso y escribir bien el codigo, me sale que esto en el terminal cuando intento correr el programa: ModuleNotFoundError: No module named 'requests'

Solo aportar que sería bueno empezar a usar httpx me parece la evolución de requests

Muy buena clase.

Instalación del Módulo requests

Para instalar el módulo requests, puedes utilizar pip, el administrador de paquetes de Python. Abre tu terminal o línea de comandos y ejecuta el siguiente comando:

pip install requests

Esto instalará el módulo requests en tu entorno de Python.

Realizar Solicitudes HTTP con el Módulo requests

Una vez que hayas instalado el módulo requests, puedes comenzar a realizar solicitudes HTTP. Aquí tienes ejemplos de cómo hacerlo:

Realizar una solicitud GET 🚀:


import requests

# URL de la solicitud
url = 'https://api.example.com/data'

# Realizar una solicitud GET
response = requests.get(url)

# Comprobar el código de estado de la respuesta
if response.status_code == 200:
    # La solicitud fue exitosa ✔️
    data = response.json()  # Para cargar datos JSON, si es aplicable
    print(data)
else:
    print(f'Error en la solicitud: {response.status_code} ❌')

Este ejemplo realiza una solicitud GET a la URL especificada y verifica si la respuesta tiene un código de estado 200 (éxito).

2. Realizar una solicitud POST 🚀:


import requests

# URL de la solicitud
url = 'https://api.example.com/post_data'

# Datos que deseas enviar en la solicitud POST (puede ser un diccionario o texto)
data = {'key': 'value'}

# Realizar una solicitud POST
response = requests.post(url, json=data)  # Puedes usar "data" en lugar de "json" para enviar datos no JSON

# Comprobar el código de estado de la respuesta
if response.status_code == 201:
    # La solicitud POST fue exitosa ✔️
    result = response.json()  # Si la respuesta incluye datos JSON
    print(result)
else:
    print(f'Error en la solicitud POST: {response.status_code} ❌')

Este ejemplo realiza una solicitud POST a la URL especificada y envía datos en el cuerpo de la solicitud.

Hola amigues, por si les interesa agregar tipado al código proporcionado en esta clase, les dejo la forma en que lo hice \- services.py ```js import requests from typing import List, TypedDict class CategoryError(Exception): def __init__(self, message): super().__init__(message) class Category(TypedDict): id: int name: str image: str creationAt: str updatedAt: str def list() -> List[Category]: response = requests.get("https://api.escuelajs.co/api/v1/categories") if not response.ok: raise CategoryError(response.json()) data: List[Category] = response.json() return data ```- main.py ```js import services def run(): try: categories = services.list() for category in categories: print(category["name"]) except services.CategoryError as e: print(e) if __name__ == "__main__": run() ```De esta manera lo que esta entre comillas en category\[""] les dará un autocompletado de las propiedades que tiene el diccionario.
Crear entorno virtual en python windows 10 
      virtualenv env
Activar entorno
       .\env\Scripts\activate
desactivar entorno
       deactivate

Por si no les quedo claro que es una API aqui hay un video. Continúen con el curso, ustedes pueden 😃

Si te sucedio como ami y digito mal el nombre de su entorno virtual. Solo basta borrar el directorio que esta el entorno virtual y volver a crear.

Tremendo python y sus librerías

Cada vez que estoy en un curso en donde utilizamos la linea de comandos, sh y el prompt mi corazón late de nuevo!

Siempre me pasa que escribo mal el nombre del archivo requirements.txt 😛

Hola a todos, el modulo de requests me presenta problemas, en vs code tengo
Import “requests” could not be resolved from sourcePylancereportMissingModuleSource

y en la terminal tengo
**ModuleNotFoundError: No module named ‘requests’
**

¿por qué sucede esto?

alguien mas tiene este error?

raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.escuelajs.co', port=443): Max retries exceeded with url: /api/v1/categories (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f6a1842a140>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))

hubiera estado bien completar el ciclo con Response 😦

Segundo post!!! Saludos