No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Prep谩rate para tu pr贸ximo empleo comprando hoy a precio especial

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

7 D铆as
20 Hrs
41 Min
47 Seg

Solicitudes HTTP con Requests

12/20
Recursos

Aportes 43

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

Link de Platzi Fake Store API:

https://fakeapi.platzi.com/

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.

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 !

Les recomiendo este v铆deo de platzi antes de ver las siguientes clases para que no est茅n perdidos:

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

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 鈥渟ervicio鈥 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.

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铆.

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鈥檚 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 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 鈥渞equests鈥 could not be resolved from sourcePylancereportMissingModuleSource

y en la terminal tengo
**ModuleNotFoundError: No module named 鈥榬equests鈥
**

驴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