En este módulo, aprenderás cómo interactuar con APIs (Interfaz de Programación de Aplicaciones) y manejar datos en formato JSON (JavaScript Object Notation) utilizando R. Las APIs permiten a las aplicaciones comunicarse entre sí, y JSON es un formato común para intercambiar datos. Este conocimiento es esencial para trabajar con datos en la web y construir aplicaciones más complejas.

Contenidos

  1. Introducción a las APIs
  2. Formato JSON
  3. Solicitudes HTTP en R
  4. Manipulación de Datos JSON
  5. Ejemplos Prácticos
  6. Ejercicios y Soluciones

  1. Introducción a las APIs

¿Qué es una API?

Una API es un conjunto de reglas que permite a diferentes programas comunicarse entre sí. Las APIs web permiten a las aplicaciones acceder a datos y servicios a través de la web.

Tipos de APIs

  • REST (Representational State Transfer): Utiliza HTTP y es el tipo más común de API web.
  • SOAP (Simple Object Access Protocol): Utiliza XML y es más complejo que REST.

  1. Formato JSON

¿Qué es JSON?

JSON es un formato ligero de intercambio de datos. Es fácil de leer y escribir para los humanos y fácil de parsear y generar para las máquinas.

Ejemplo de JSON

{
  "name": "John Doe",
  "age": 30,
  "isStudent": false,
  "courses": ["Math", "Science", "History"]
}

  1. Solicitudes HTTP en R

Para interactuar con APIs en R, utilizaremos el paquete httr.

Instalación del Paquete

install.packages("httr")
library(httr)

Realizar una Solicitud GET

response <- GET("https://api.example.com/data")
status_code(response)  # Verificar el código de estado de la respuesta
content(response, "text")  # Obtener el contenido de la respuesta

Realizar una Solicitud POST

response <- POST("https://api.example.com/data", body = list(key1 = "value1", key2 = "value2"), encode = "json")
status_code(response)
content(response, "text")

  1. Manipulación de Datos JSON

Para trabajar con datos JSON en R, utilizaremos el paquete jsonlite.

Instalación del Paquete

install.packages("jsonlite")
library(jsonlite)

Parsear JSON

json_data <- '{"name": "John Doe", "age": 30, "isStudent": false, "courses": ["Math", "Science", "History"]}'
parsed_data <- fromJSON(json_data)
print(parsed_data)

Convertir Datos a JSON

data <- list(name = "John Doe", age = 30, isStudent = FALSE, courses = c("Math", "Science", "History"))
json_data <- toJSON(data, pretty = TRUE)
print(json_data)

  1. Ejemplos Prácticos

Ejemplo 1: Obtener Datos de una API Pública

# Obtener datos de una API pública
response <- GET("https://api.coindesk.com/v1/bpi/currentprice.json")
data <- fromJSON(content(response, "text"))
print(data)

Ejemplo 2: Enviar Datos a una API

# Enviar datos a una API
response <- POST("https://httpbin.org/post", body = list(name = "John Doe", age = 30), encode = "json")
data <- fromJSON(content(response, "text"))
print(data)

  1. Ejercicios y Soluciones

Ejercicio 1: Obtener Datos de una API

Instrucciones:

  1. Utiliza la API de OpenWeatherMap para obtener el clima actual de una ciudad.
  2. Parsear los datos JSON y extraer la temperatura actual.

Código:

# Instalar y cargar los paquetes necesarios
install.packages("httr")
install.packages("jsonlite")
library(httr)
library(jsonlite)

# Realizar la solicitud GET
api_key <- "TU_API_KEY"
city <- "London"
response <- GET(paste0("http://api.openweathermap.org/data/2.5/weather?q=", city, "&appid=", api_key))

# Verificar el código de estado
if (status_code(response) == 200) {
  # Parsear los datos JSON
  data <- fromJSON(content(response, "text"))
  # Extraer la temperatura actual
  temperature <- data$main$temp
  print(paste("La temperatura actual en", city, "es", temperature, "Kelvin"))
} else {
  print("Error al obtener los datos")
}

Ejercicio 2: Enviar Datos a una API

Instrucciones:

  1. Utiliza la API de httpbin para enviar un JSON con tu nombre y edad.
  2. Verifica la respuesta de la API.

Código:

# Instalar y cargar los paquetes necesarios
install.packages("httr")
install.packages("jsonlite")
library(httr)
library(jsonlite)

# Crear los datos a enviar
data <- list(name = "Jane Doe", age = 25)

# Realizar la solicitud POST
response <- POST("https://httpbin.org/post", body = data, encode = "json")

# Verificar el código de estado
if (status_code(response) == 200) {
  # Parsear los datos JSON de la respuesta
  response_data <- fromJSON(content(response, "text"))
  print(response_data)
} else {
  print("Error al enviar los datos")
}

Conclusión

En este módulo, has aprendido cómo interactuar con APIs y manejar datos en formato JSON utilizando R. Ahora puedes realizar solicitudes HTTP, parsear y generar JSON, y trabajar con datos de la web. Estos conocimientos te permitirán construir aplicaciones más complejas y acceder a una amplia gama de datos disponibles en la web.

En el próximo módulo, profundizaremos en conceptos avanzados de programación en R, incluyendo la escritura de funciones y la depuración de código. ¡Sigue adelante!

Programación en R: De Principiante a Avanzado

Módulo 1: Introducción a R

Módulo 2: Manipulación de Datos

Módulo 3: Visualización de Datos

Módulo 4: Análisis Estadístico

Módulo 5: Manejo Avanzado de Datos

Módulo 6: Conceptos Avanzados de Programación

Módulo 7: Aprendizaje Automático con R

Módulo 8: Temas Especializados

Módulo 9: Proyecto y Estudios de Caso

© Copyright 2024. Todos los derechos reservados