1- APP (Aplicación):
- Es un programa de software diseñado para realizar tareas específicas.
- Las apps pueden estar destinadas a dispositivos móviles, computadoras u otros sistemas.
- Sirven para resolver problemas, ofrecer servicios (como banca en línea, entretenimiento o comunicación) y facilitar la vida cotidiana.
2- API (Interfaz de Programación de Aplicaciones):
- Es un conjunto de reglas y protocolos que permiten que distintas aplicaciones se comuniquen entre sí.
- Sirve como puente para que una app acceda a servicios o datos de otra aplicación o sistema. Por ejemplo, una API de mapas permite que tu app de taxi utilice mapas y ubicación sin tener que crear esa funcionalidad desde cero.
Estructura aceptada internacionalmente y su propósito:
La estructura internacionalmente aceptada para apps y APIs sigue buenas prácticas de diseño de software, enfocadas en:
- Modularidad: Dividir el sistema en componentes pequeños y manejables.
- Escalabilidad: Que puedan manejar más usuarios o funciones sin problemas.
- Documentación estándar: En el caso de APIs, se suele usar REST o GraphQL junto con especificaciones como OpenAPI para facilitar su comprensión y uso.
- Seguridad: Implementar protocolos como HTTPS, autenticación y autorización.
La razón detrás de estas estructuras y estándares es asegurar que los sistemas sean compatibles internacionalmente, fáciles de mantener, accesibles y, sobre todo, seguros.
1. OpenAPI
- ¿Qué es? OpenAPI es una especificación estándar utilizada para describir y documentar APIs REST. Básicamente, es un formato estructurado que te permite escribir toda la información sobre tu API (endpoints, parámetros, respuestas, etc.) de manera comprensible tanto para humanos como para máquinas.
-
Puedes usar herramientas como Swagger UI o Redoc para generar
una interfaz visual interactiva basada en la especificación OpenAPI de tu
API.
- ¿Cómo usarlo? OpenAPI se escribe comúnmente en formato YAML o JSON. Por ejemplo:
openapi: 3.0.0
info:
title: Mi API
version: 1.0.0
paths:
/usuarios:
get:
summary: Obtiene una lista de usuarios
responses:
'200':
description: Lista de usuarios
2. REST (Representational State Transfer)
- ¿Qué es? REST es un estilo de arquitectura que define cómo las aplicaciones web deben comunicarse a través de HTTP. Las APIs RESTful exponen recursos (como usuarios, productos, etc.) y utilizan verbos HTTP (GET, POST, PUT, DELETE) para interactuar con ellos.
- ¿Cómo usarlo? Si tienes una API RESTful, interactúas con ella mediante solicitudes HTTP. Por ejemplo:
-
GET
https://api.misitio.com/usuarios
- Para obtener usuarios. -
POST
https://api.misitio.com/usuarios
- Para crear un usuario. Puedes usar herramientas como Postman para probar estas solicitudes.
3. GraphQL
¿Qué es? GraphQL es un lenguaje de consulta y un runtime para APIs que te permite pedir exactamente los datos que necesitas. Es más flexible que REST, ya que no estás limitado por estructuras predeterminadas.
¿Cómo usarlo? Con GraphQL escribes consultas para obtener los datos. Por ejemplo:
query {
usuarios {
id
nombre
email
}
}
Necesitas un servidor GraphQL (como Apollo Server o GraphQL.js) y un cliente (como Apollo Client) para interactuar.
¿Cómo acceder a los códigos fuentes?
Si quieres trabajar directamente con estas tecnologías:
- OpenAPI: Usa herramientas como Swagger Codegen para generar código fuente a partir de la especificación OpenAPI.
- REST: Aprende sobre frameworks como Expres.js (Node.js), Spring Boot (Java) o Django REST Framework (Python) para crear APIs RESTful.
- GraphQL: Puedes utilizar bibliotecas como GraphQL.JS o Apollo Server para implementar GraphQL en tus proyectos.
REST (Representational State Transfer)
Aquí tienes ejemplos prácticos para GET, POST, PUT, y DELETE, junto con otros verbos HTTP y funcionalidades adicionales que puedes implementar en APIs:
GET
Objetivo: Obtener información de un recurso. Ejemplo: Obtener una lista de usuarios
GET /usuarios HTTP/1.1
Host: api.misitio.com
Respuesta
[
{
"id": 1,
"nombre": "Juan Pérez",
"email": "juan@example.com"
},
{
"id": 2,
"nombre": "Ana López",
"email": "ana@example.com"
}
]
POST
Objetivo: Crear un nuevo recurso. Ejemplo: Crear un nuevo usuario
POST /usuarios HTTP/1.1
Host: api.misitio.com
Content-Type: application/json
{
"nombre": "Carlos García",
"email": "carlos@example.com"
}
Respuesta
{
"id": 3,
"nombre": "Carlos García",
"email": "carlos@example.com"
}
PUT
Objetivo: Actualizar un recurso existente (reemplaza toda la información). Ejemplo: Actualizar la información de un usuario
PUT /usuarios/1 HTTP/1.1
Host: api.misitio.com
Content-Type: application/json
{
"nombre": "Juan Pérez Actualizado",
"email": "juan.actualizado@example.com"
}
Respuesta
{
"id": 1,
"nombre": "Juan Pérez Actualizado",
"email": "juan.actualizado@example.com"
}
DELETE
Objetivo: Eliminar un recurso. Ejemplo: Eliminar un usuario por ID
DELETE /usuarios/1 HTTP/1.1
Host: api.misitio.com
Respuesta
{
"mensaje": "Usuario eliminado con éxito"
}
Otros verbos HTTP:
PATCH: Similar a PUT, pero solo actualiza una parte del recurso.
-
Ejemplo: Actualizar el correo de un usuario
PATCH /usuarios/1 HTTP/1.1
Host: api.misitio.com
Content-Type: application/json
{
"email": "nuevo.email@example.com"
}
OPTIONS: Obtiene información sobre los métodos soportados por un servidor.
-
Ejemplo:
OPTIONS /usuarios HTTP/1.1
Host: api.misitio.com
Allow: GET, POST, PUT, DELETE, OPTIONS
HEAD: Similar a GET, pero solo devuelve los encabezados y no el cuerpo de la respuesta.
-
Esto se usa para verificar si un recurso existe.
Otras funciones que se pueden implementar:
Autenticación y Autorización:
- Usa tokens (como JWT) o claves API para proteger tu API.
Filtrado y paginación:
- Permite buscar y limitar resultados. Por ejemplo:
GET /usuarios?nombre=Juan&pagina=1&limite=10
- Envía notificaciones automáticas cuando ocurre un evento (por ejemplo, cambios en datos).
-
Responde más rápido reutilizando respuestas anteriores con encabezados
como
Cache-Control
.