2 API - Crear Servidor Con Express
2 API - Crear Servidor Con Express
Las API son mecanismos que permiten a dos componentes de software comunicarse entre sí
mediante un conjunto de definiciones y protocolos, in necesidad de saber cómo están
implementados. Esto simplifica el desarrollo de las aplicaciones y permite ahorrar tiempo y dinero.
Las API le otorgan flexibilidad; simplifican el diseño, la administración y el uso de las aplicaciones; y
ofrecen oportunidades de innovación, lo cual es ideal al momento de diseñar herramientas y
productos nuevos (o de gestionar los actuales).
Ejemplo1: imagínese una empresa distribuidora de libros que podría ofrecer a los clientes una
aplicación de nube que les permitiera a los empleados de la librería verificar la disponibilidad de los
libros con el distribuidor. El desarrollo de la aplicación podría ser costoso, verse limitado por la
plataforma, llevar mucho tiempo y requerir mantenimiento permanente.
Otra opción es que la distribuidora de libros proporcionara una API para verificar la disponibilidad
en inventario. Existen varios beneficios de este enfoque:
Permite que los clientes accedan a los datos con una API que les ayude a añadir información
sobre su inventario en un solo lugar.
La distribuidora de libros podría realizar cambios en sus sistemas internos sin afectar a los
clientes, siempre y cuando el comportamiento de la API fuera el mismo.
Con una API disponible de forma pública, los desarrolladores que trabajan para la distribuidora
de libros, los vendedores o los terceros podrían desarrollar una aplicación para ayudar a los
clientes a encontrar los libros que necesiten. Esto podría dar como resultado mayores ventas u
otras oportunidades comerciales.
Ejemplo2: Ejemplo del mundo real, Twitter proporciona una API REST que puede consultar para
obtener los últimos tweets, puede proporcionar una consulta de búsqueda (o una etiqueta hash) y
devolverá los resultados en formato JSON. Puede ver mas información de la API de Twitter aquí:
https://developer.twitter.com/en/docs/twitter-api/v1/tweets/search/api-reference/get-search-
tweets.
Ejemplo3: The movie DB, API también del mundo real con más de 400000 desarrolladores y
empresas que utilizan la plataforma, TMDB se ha convertido en una fuente principal de metadatos
donde puede encontrar Millones de películas, programas de televisión y personas por descubrir. Por
ejemplo si sigue este link, encontraras un listado de películas que contienen la palabra Batman:
https://api.themoviedb.org/3/search/movie?api_key=591d0e2aa95db492efcabcbcd04f1ac1&lang
uage=en-US&query=batman&page=1&include_adult=false
En resumen, las API le permiten ofrecer acceso a los recursos y, al mismo tiempo, mantener la
seguridad y el control. Usted decide cómo habilita el acceso y a quiénes se lo otorga. La seguridad
de las API depende de su buena gestión, lo cual incluye el uso de una puerta de enlace de API. Para
conectarse a las API y crear aplicaciones que utilicen los datos o las funciones que ofrecen, se puede
utilizar una plataforma de integración distribuida que conecte todos los elementos, como los
sistemas heredados y el Internet de las cosas (IoT).
API SOAP
Estas API utilizan el protocolo simple de acceso a objetos. El cliente y el servidor intercambian
mensajes mediante XML. Se trata de una API menos flexible que era más popular en el pasado.
API RPC
Estas API se denominan llamadas a procedimientos remotos. El cliente completa una función (o
procedimiento) en el servidor, y el servidor devuelve el resultado al cliente.
API WebSocket
La API WebSocket es otro desarrollo moderno de la API web que utiliza objetos JSON para pasar
datos. La API de WebSocket admite la comunicación bidireccional entre las aplicaciones cliente y el
servidor. El servidor puede enviar mensajes de devolución de llamada a los clientes conectados, por
lo que es más eficiente que la API REST.
API REST
Estas son las API más populares y flexibles que se encuentran en la web actualmente. El cliente envía
las solicitudes al servidor como datos. El servidor utiliza esta entrada del cliente para iniciar
funciones internas y devuelve los datos de salida al cliente. Veamos las API REST con más detalle a
continuación.
Una API web o API de servicios web es una interfaz de procesamiento de aplicaciones entre un
servidor web y un navegador web. Todos los servicios web son API, pero no todas las API son
servicios web. La API de REST es un tipo especial de API web que utiliza el estilo arquitectónico
estándar explicado anteriormente.
Los diferentes términos relacionados con las API, como API de Java o API de servicios, existen porque
históricamente las API se crearon antes que la World Wide Web. Las API web modernas son API de
REST y los términos pueden utilizarse indistintamente.
Las integraciones de las API son componentes de software que actualizan automáticamente los
datos entre los clientes y los servidores. Algunos ejemplos de integraciones de las API son la
sincronización automática de datos en la nube desde la galería de imágenes de su teléfono o la
sincronización automática de la hora y la fecha en su laptop cuando viaja a otra zona horaria. Las
empresas también pueden utilizarlas para automatizar de manera eficiente muchas funciones del
sistema.
Las API se clasifican tanto en función de su arquitectura como de su ámbito de uso. Ya exploramos
los principales tipos de arquitecturas de API, ahora veamos el ámbito de uso.
API privadas: Estas son internas de una empresa y solo se utilizan para conectar sistemas y
datos dentro de la empresa.
API públicas: Están abiertas al público y pueden cualquier persona puede utilizarlas. Puede
haber o no alguna autorización y coste asociado a este tipo de API. ej. api de Facebook,
Twitter, Google Maps, TheMovieDB, entre muchas más.
API de socios: Solo pueden acceder a ellas los desarrolladores externos autorizados para
ayudar a las asociaciones entre empresas.
API compuestas: Estas combinan dos o más API diferentes para abordar requisitos o
comportamientos complejos del sistema.
Todas las API deben protegerse mediante una autenticación y una supervisión adecuadas. Las dos
maneras principales de proteger las API de REST son las siguientes:
Tokens de autenticación
Se utilizan para autorizar a los usuarios a hacer
la llamada a la API. Los tokens de autenticación
comprueban que los usuarios son quienes
dicen ser y que tienen los derechos de acceso
para esa llamada concreta a la API. Por
ejemplo, cuando inicia sesión en el servidor de
correo electrónico, el cliente de correo
electrónico utiliza tokens de autenticación
para un acceso seguro.
Claves de API
Las claves de API verifican el programa o la aplicación que hace la llamada a la API. Identifican la
aplicación y se aseguran de que tiene los derechos de acceso necesarios para hacer la llamada a la
API en cuestión. Las claves de API no son tan seguras como los tokens, pero permiten supervisar la
API para recopilar datos sobre su uso. Es posible que haya notado una larga cadena de caracteres y
números en la URL de su navegador cuando visita diferentes sitios web. Esta cadena es una clave de
la API que el sitio web utiliza para hacer llamadas internas a la API.
¿Cómo crear una API?
Se requiere la debida diligencia y esfuerzo para crear una API con la que otros desarrolladores
quieran trabajar y en la que confíen. Los siguientes son los cinco pasos necesarios para un diseño de
API de alta calidad:
1. Planificación de la API
Las especificaciones de la API, como OpenAPI, proporcionan el esquema para el diseño de su API. Es
mejor pensar en los diferentes casos de uso por adelantado y asegurarse de que la API cumple con
los estándares de desarrollo actuales.
2. Creación de la API
Los diseñadores de API crean prototipos de API mediante código reutilizable. Una vez probado el
prototipo, los desarrolladores pueden personalizarlo a las especificaciones internas.
3. Prueba de la API
Las pruebas de la API son las mismas que las del software y deben hacerse para evitar errores y
defectos. Las herramientas de pruebas de la API pueden utilizarse para reforzar la prueba de la API
contra los ciberataques.
4. Documentación de la API
Aunque las API son explicativas, la documentación de las mismas sirve de guía para mejorar su uso.
Las API bien documentadas que ofrecen una gama de funciones y casos de uso tienden a ser más
populares en una arquitectura orientada a servicios.
5. Comercialización de la API
Así como Amazon es un mercado en línea para la venta minorista, los mercados de API existen para
que los desarrolladores compren y vendan otras API. Publicar su API puede permitirle monetizarla.
Front-end y back-end son términos que se refieren a la separación de intereses entre una capa de
presentación y una capa de acceso a datos, respectivamente. Según el contexto, para referirse a
front end se usan otros términos como frontal o interfaz de usuario, mientras que a backend se le
llama servidor, motor o modo administrador.
Todo, la lógica, las operaciones del lado del servidor y las funciones de la base de datos, es manejado
por el backend. Aunque el frontend es visible cuando desarrolla una aplicación, la mayor parte de
la funcionalidad de la aplicación se encuentra tras el backend.
A pesar de ser la parte central del software o una aplicación, el backend no es visible para el usuario
final, y la razón de esto es que el frontend está hecho para que las cosas parezcan menos complejas
y fáciles de usar.
A menudo, una API se considera un "componente" del back-end. Y, por ejemplo, una base de datos
también puede tratarse como otro componente de back-end. La mayoría de las veces no es útil
especificar que una API es el backend porque en realidad todos lo son. Si todo lo que tienes del lado
del servidor es una API, entonces puedes argumentar que la palabra backend y API serian lo mismo.
Si el servidor es algo más complejo diríamos que la API es un componente del backend.
Les sugiero complementar los conocimientos adquiridos hasta ahora con la visualización del
siguiente video: https://www.youtube.com/watch?v=JD6VNRdGl98.
CREAR SERVIDOR API-REST CON EXPRESS
Introducción
Recuerde que para todas las instalaciones debe cerciorarse que este ubicado dentro de la carpeta
del proyecto. Después de cada instalación opcionalmente puede revisar el archivo package.json
para comprobar que la librería se instaló correctamente.
Permite definir rutas que corresponden a métodos HTTP como son peticiones GET, POST, PUT,
DELETE, etc.
Ahora que Express está instalado, cree un nuevo archivo y ábralo con su editor de código. A
continuación, agregue las siguientes líneas de código: para este ejemplo lo llamare: server.js.
Fuente: https://www.npmjs.com/package/express
server.js
En el bloque rojo importamos el módulo Express principal del paquete que instaló. Este módulo es
una función, que luego ejecutamos en la segunda línea para crear nuestro servidor en la variable
app. Puede crear varios servidores de esta manera, cada uno con sus propias solicitudes y
respuestas.
En las líneas del bloque azul definimos en nuestro servidor Express una solicitud de tipo GET. Express
incluye funciones similares para POST, PUT, DELETE, etc. usando app.post(...), app.put(...), etc.
Revisa el siguiente link para aprender más sobre las peticiones HTTP:
https://developer.mozilla.org/es/docs/Web/HTTP/Methods
Estas funciones toman dos parámetros principales. La primera es la URL (ruta) sobre la que actúa
esta función. En este caso ('/',…..), estamos apuntando, a la raíz de nuestro sitio web:
localhost:3000
El segundo parámetro es una función con dos argumentos: req y res. (req, …) representa la solicitud
que se envió al servidor; Podemos usar este objeto para recibir datos sobre lo que el cliente está
solicitando hacer y la información que está enviando. (…,res) representa la respuesta que
enviaremos de vuelta al cliente, para el ejemplo anterior es un objeto json con la clave 'msg'.
Por defecto res.json(…..) devuelve un código de status 200 ok, pero puede cambiarse mediante la
línea res.status(401).json(…..), para el ejemplo anterior se devolvería el código de status 401.
Para más información sobre códigos de estado revisen este link:
https://developer.mozilla.org/es/docs/Web/HTTP/Status
Finalmente, en el bloque amarillo, una vez que hayamos configurado nuestras solicitudes, ¡debemos
iniciar nuestro servidor! A la función listen le estamos pasando dos paramentos, el primero le dice
a la aplicación en qué puerto escuchar. La función pasada como segundo parámetro es opcional y
se ejecuta cuando se inicia el servidor. Esto nos proporciona algunos comentarios en la consola para
saber que nuestra aplicación se está ejecutando en el puerto 3000.
Y ahí lo tenemos, ¡un servidor web! corriendo. Sin embargo, definitivamente queremos enviar más
que una sola línea de texto al cliente.
Los principios clave de REST implican separar su API en recursos lógicos. Estos recursos se manipulan
utilizando solicitudes HTTP donde el método (GET, POST, PUT, PATCH, DELETE) tiene un significado
específico.
Supongamos que tenemos una tabla o colección de una base de datos y queremos crear una API-
REST que haga un CRUD sobre ella.
Usuarios
Los principios RESTful proporcionan estrategias para manejar las acciones CRUD utilizando los
métodos HTTP mapeados de la siguiente manera:
Ejemplo
Lo mejor de REST es que aprovecha los métodos HTTP existentes para implementar funcionalidades
significativas en solo un punto final de tickets. No hay convenciones de nombres de métodos a seguir
y la estructura de URL es clara.
app.get('/usuario',function (req,res) {
res.json({'msg':"Recupera una lista de usuarios"})
});
app.get('/usuario/:userId',(req,res)=>{
res.json({'msg':"Recupera un usuario específico (el que tiene el id 12)"})
});
El código para POST / usuario. (noten que tanto en Postman, como en VSC ahora es post)
app.post('/usuario',(req,res)=>{
res.json({'msg':"Crea un nuevo usuario"})
});
El código para PUT / usuario/12. (noten que tanto en Postman, como en VSC ahora es put)
app.put('/usuario/:userId',(req,res)=>{
res.json({'msg':"Actualiza usuario # 12"})
});
El código para DELETE / usuario/12. (noten que tanto en Postman, como en VSC ahora es delete)
app.delete('/usuario/userId',(req,res)=>{
res.json({'msg':"Elimina el usuario # 12"})
});
En pocas palabras, CRUD resume las funciones requeridas por un usuario para crear y gestionar
datos.
Métodos de petición HTTP: HTTP define un conjunto de métodos de petición para indicar la
acción que se desea realizar para un recurso determinado. Aunque estos también pueden ser
sustantivos, estos métodos de solicitud a veces son llamados HTTP verbs. Cada uno de ellos
implementan una semántica diferente, pero algunas características similares son compartidas
por un grupo de ellos: GET, POST, PUT, DELETE, PATH, ETC. Más información:
https://developer.mozilla.org/es/docs/Web/HTTP/Methods.