Breaking

Diferencia entre una APP Y API

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:

  1. Modularidad: Dividir el sistema en componentes pequeños y manejables.
  2. Escalabilidad: Que puedan manejar más usuarios o funciones sin problemas.
  3. 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.
  4. 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 
      
     Webhooks:
    • Envía notificaciones automáticas cuando ocurre un evento (por ejemplo, cambios en datos).
     Caché:
    • Responde más rápido reutilizando respuestas anteriores con encabezados como Cache-Control.

    Publicar un comentario

    Artículo Anterior Artículo Siguiente