API son las siglas en inglés de Interfaz de Programación de Aplicaciones. Sirve de pasarela para que las aplicaciones accedan a algunos recursos de otras aplicaciones.
La ventaja de utilizar una API es proporcionar acceso a aplicaciones de terceros de forma que no puedan acceder a todos los datos de su aplicación. Sólo pueden acceder a los datos que usted expone a través de su API.
La aplicación o el usuario que quiere acceder a los datos se conoce como cliente, y la aplicación que sirve los datos se conoce como servidor.
Las API se utilizan mucho hoy en día en todas las arquitecturas de software. Si está solicitando un puesto de front-end, back-end, full-stack o de ingeniería de redes, entonces le harán muchas preguntas relacionadas con las API.
Dicho esto, vamos a explorar algunas de las preguntas más frecuentes de las entrevistas sobre las API REST.
¿Qué es REST?
Respuesta: REST es un diseño arquitectónico que define algunas restricciones en el funcionamiento de las API. Las API que siguen los principios de REST se conocen como API RESTful. REST son las siglas de Representational State Transfer (transferencia de estado representacional).
No es un protocolo ni un estándar, sino una arquitectura que puede utilizarse para implementar API de diversas maneras.
Proporciona una gran flexibilidad y libertad a los desarrolladores, y por eso se utiliza ampliamente para desarrollar API. He aquí algunos de los principios de una arquitectura REST:
- Separación de cliente y servidor: En una API RESTful, el cliente no debe afectar al servidor de ninguna otra forma que no sea solicitando datos a través de un URI (Identificador Uniforme de Recursos). Del mismo modo, el servidor no debe modificar el contenido del cliente de ninguna manera.
- Sin estado: Cuando se realizan dos peticiones distintas, no saben la una de la otra. En otras palabras, las peticiones son apátridas y no mantienen un estado. Si una solicitud se cumple, simplemente termina. Cada solicitud está aislada de las demás.
- Arquitectura en capas: El cliente o el servidor no saben si la solicitud se realiza directamente al origen o a una aplicación intermediaria. Sólo les importa la respuesta a la solicitud.
- Almacenamiento en caché: Los datos o la respuesta pueden almacenarse en caché tanto en el lado del cliente como en el del servidor para mejorar el rendimiento y la escalabilidad. Si hay solicitudes frecuentes de un recurso concreto, la respuesta a esa solicitud puede almacenarse en caché y utilizarse cuando se necesite.
¿Cuáles son algunas de las características clave de REST?
Respuesta: Las características o rasgos clave de REST son
- Flexibilidad: Puede pasar de un servidor a otro y no cambiará nada porque la API enviará la misma respuesta para una solicitud concreta. Además, puede añadir tantos puntos finales como desee para diferentes tipos de datos.
- Escalabilidad: El almacenamiento en caché mejora la escalabilidad debido a que las respuestas se guardan para su uso posterior. Disminuye la carga del servidor y también reduce la latencia.
- Autorización: Con la ayuda del encabezado de autorización, puede especificar las credenciales que el servidor puede utilizar para autorizar la solicitud.
- Sin estado: Es la característica más importante de REST porque impide que las solicitudes sepan lo que está ocurriendo con otras solicitudes. Las peticiones se aíslan y terminan en cuanto se cumplen.
¿Qué son los recursos en una arquitectura REST?
Respuesta: Los recursos son entidades sobre las que se realizan diferentes operaciones, como recuperar, actualizar o eliminar. Son los componentes básicos de la arquitectura REST.
Por ejemplo, si pensamos en una tienda de comercio electrónico en línea, los productos, los usuarios y los metadatos se consideran recursos porque se puede operar sobre ellos. Los recursos pueden transferirse a otra aplicación a través de la API.
Mencione algunas ventajas y desventajas de una API REST.
Respuesta: Las ventajas de las API REST son las siguientes:
- Es sencilla de implementar.
- Los recursos pueden manejarse fácilmente.
- Es escalable debido a la arquitectura cliente-servidor.
- Admite varios tipos de medios de transferencia de datos, como XML y JSON.
Sus desventajas son:
- No se puede mantener un estado entre peticiones.
- No se puede conocer la verdadera fuente de origen del recurso debido a la arquitectura en capas.
- No es bueno para consultas o peticiones complejas.
Defina la plantilla REST.
Responda: Una plantilla REST es una utilidad o un cliente a través del cual puede acceder a las API REST en el marco de Spring. Básicamente oculta el código boilerplate que puede tener que escribir para solicitar un recurso de una API REST.
¿Qué es RESTful?
Respuesta: Las API o servicios RESTful son interfaces que implementan el estilo arquitectónico REST(Representational State Transfer) y funcionan utilizando protocolos como HTTP.
¿Qué son los servicios web RESTful?
Respuesta: Los servicios web RESTful están construidos para funcionar mejor en la Web. La transferencia de estado representacional (REST) es un estilo arquitectónico que especifica restricciones, como la interfaz uniforme, la arquitectura en capas y la ausencia de estado, que si se aplican a un servicio web inducen propiedades deseables, como el rendimiento y la escalabilidad, que permiten que los servicios funcionen mejor en la Web.
¿Cómo se pueden probar los servicios web RESTful?
Respuesta: Para probar un servicio web RESTful, puede utilizar un cliente REST como Postman o Thunder Client y realizar una consulta al servicio web que desea probar. Luego, cuando obtenga una respuesta, entienda la respuesta; esa es la parte clave.
Si desea probar una API compleja con muchos puntos finales, es posible que tenga que desglosar las pruebas y realizar pruebas unitarias, pruebas de integración, pruebas de rendimiento y pruebas de extremo a extremo.
Mencione algunas características de los servicios web RESTful.
Responda: Algunas de las características clave de los servicios web RESTful son:
- Compatibilidad con múltiples tipos de medios como JSON y XML.
- Escalabilidad
- Aislamiento de cliente y servidor
- Flexibilidad
Definir clases de recursos raíz RESTful.
Respuesta: Las clases de recursos raíz son «objetos Java simples» (POJO) que están anotados con @Path o tienen al menos un método anotado con @Path o un designador de método de solicitud, como @GET
, @POST
, @PUT
o @DELETE
.
¿Qué es URI?
Respuesta: URI son las siglas de Uniform Resource Identifier (identificador uniforme de recursos). Es una secuencia de caracteres utilizada para localizar o identificar recursos de una API o un servicio. Utiliza el nombre o la ubicación del recurso para identificarlo, pero no depende de un método o técnica en particular.
¿Qué es la apatridia en REST?
Respuesta: La apatridia se refiere a una restricción aplicada a una API en la que dos solicitudes cualesquiera no pueden saber lo que está ocurriendo entre ellas. En otras palabras, no se mantiene el estado de las solicitudes. Si la solicitud se cumple, simplemente termina tras obtener una respuesta.
¿Qué es JAX-RS?
Respuesta: JAX-RS es una API Java que le permite desarrollar aplicaciones en Java que utilicen la arquitectura REST. Esta API facilita el desarrollo de aplicaciones REST en Java.
¿Cuáles son las anotaciones clave en la API JAX-RS?
Respuesta: Las anotaciones en JAX-RS son utilizadas por los desarrolladores para decorar las clases Java con el fin de definir los recursos y los métodos que se pueden realizar en esos recursos. Algunas anotaciones clave de la API JAX-RS son:
@GET
: Se utiliza para realizar peticiones GET en HTTP.@POST
: Se utiliza para realizar peticiones POST en HTTP.@Path
: Hace referencia a la ruta relativa de una clase Java.@QueryParam
: Hace referencia a los parámetros de consulta de la URI o URL.
¿Cuáles son algunas de las características clave de la APIJAX-RS?
Respuesta: Las características de JAX-RS son:
- Almacenamiento en caché del lado del cliente
- Almacenamiento en caché del lado del servidor
- Personalización de la cadena de consulta
- Anotaciones en tiempo de ejecución
¿Cómo se pueden configurar las aplicaciones JAX-RS?
Respuesta: Una aplicación JAX-RS consta de al menos una clase de recurso empaquetada dentro de un archivo WAR. La URI base desde la que los recursos de una aplicación responden a las solicitudes puede configurarse de dos maneras:
- Utilizando la anotación @ApplicationPath en una subclase de javax.ws.rs.core.Application empaquetada dentro del WAR
- Utilizando la etiqueta servlet-mapping dentro del descriptor de despliegue web.xml del WAR
¿Qué son JAX-WS y JAX-RS?
Respuesta: JAX-WS es una API de servicios web XML de Yakarta que se utiliza para desarrollar API mediante el Protocolo simple de acceso a objetos (SOAP), un protocolo de mensajería basado en XML.
Por otro lado, JAX-RS es una API Java utilizada para crear servicios web utilizando la arquitectura REST.
¿Qué son los códigos de estado HTTP?
Respuesta: Los códigos de estado no son más que una forma de comunicar el estado de la respuesta enviada por el servidor al cliente. Están presentes en las cabeceras de respuesta enviadas por el servidor.
El cliente es capaz de averiguar si la solicitud ha fallado o se ha cumplido o si hay algo mal en la respuesta utilizando los códigos de estado.
He aquí algunos códigos de estado comunes de HTTP:-
200
– Significa la palabra clave «OK». Significa que la solicitud se ha cumplido y la respuesta es correcta.404
– Significa «No encontrado». Significa que un recurso no está presente en el servidor o que un punto final no existe.500
– Significa «Error interno del servidor». Esto suele ocurrir cuando el servidor no puede generar la respuesta correcta, o hay un error que no se lanza explícitamente.503
– Significa «Servicio no disponible». Significa que actualmente el servidor no puede procesar ninguna petición, probablemente porque está muerto o no funciona debido a una sobrecarga de peticiones. También puede ocurrir cuando el servidor está parado por mantenimiento.
¿Qué son los métodos HTTP?
Respuesta: Los métodos HTTP se utilizan para realizar un determinado tipo de acción sobre un recurso concreto de una API. Por ejemplo, si desea obtener una lista de películas de una API de colección de películas, puede utilizar el método GET proporcionado por HTTP. Si desea actualizar los datos, puede utilizar el método POST proporcionado por HTTP.
Los métodos HTTP más utilizados son los siguientes
- GET: Las solicitudes que utilizan GET sólo deben recuperar datos.
- POST: Actualiza el recurso enviando un nuevo recurso actualizado al servidor.
- DELETE: Elimina el recurso especificado.
- PATCH: Modifica parcialmente el recurso.
¿Cómo funciona la autenticación básica HTTP?
Respuesta: La autenticación es un proceso para verificar la autenticidad de un cliente para mantener la seguridad de los datos. En HTTP, la autenticación funciona a través de una Cabecera de Autorización, que es enviada por el cliente.
El Encabezado de Autorización consiste en el nombre de usuario/id y la contraseña del cliente, que luego son verificados por el servidor, y se concede el acceso.
Una cosa importante a tener en cuenta aquí es que cuando se utiliza la autenticación HTTP, el canal a través del cual pasan las credenciales debe ser cifrado y seguro.
Puede asegurar el canal utilizando la capa SSL, que está integrada en HTTPS. Por lo tanto, se recomienda utilizar HTTPS en lugar de HTTP simple cuando se trate de credenciales.
¿Cuáles son los componentes básicos de la solicitud HTTP?
Respuesta: Una solicitud HTTP consta de los siguientes componentes:
- Línea desolicitud: Es la primera línea de cualquier solicitud y consta del método HTTP, la ruta o punto final y el número de versión HTTP.
- Cabeceras: Las cabeceras HTTP se utilizan para proporcionar metadatos de la solicitud.
- Cuerpo (opcional): Este componente sólo está presente para algunos de los métodos de solicitud. No es necesario para las peticiones GET, pero sí para las peticiones POST. Es el mensaje real de la solicitud.
¿Cuáles son los componentes básicos de la respuesta HTTP?
Respuesta: Una respuesta HTTP consta de los siguientes componentes:
- Estado: Se refiere al código de estado HTTP que envía el servidor.
- Cabeceras: Al igual que las solicitudes, las respuestas también tienen sus respectivas cabeceras, que proporcionan información útil sobre la respuesta.
- Mensaje: Son los datos reales que envía el servidor al cliente para solicitar un recurso concreto.
¿Cuál es la diferencia entre REST y AJAX?
Respuesta: AJAX es un cliente a través del cual se puede acceder a las API RESTful. Se utiliza para enviar peticiones asíncronas utilizando JavaScript.
REST, o Representational State Transfer, es una arquitectura que se puede implementar para crear API RESTful. En resumen, para enviar peticiones HTTP, puede utilizar AJAX que sirve como cliente, pero si desea implementar API RESTful, entonces tiene que utilizar la arquitectura REST.
¿Cuál es la diferencia entre SOAP y REST?
Respuesta: Representational State Transfer, o REST, es una arquitectura con restricciones mínimas para crear API. SOAP, o Protocolo Simple de Acceso a Objetos, es un protocolo con requisitos estrictos para implementar una API.
REST es más flexible y fácil de usar que SOAP. En SOAP se utiliza la mensajería basada en XML, mientras que en REST se pueden utilizar muchos tipos de transferencia de datos, como JSON, XML, etc. En comparación con SOAP, REST es más ligero y rápido.
Los servicios web SOAP tienen seguridad incorporada, que es una de las ventajas de utilizar SOAP frente a REST, pero las características añadidas también lo hacen complejo y pesado de utilizar.
¿Cuál es la diferencia entre PUT y POST?
Respuesta: POST es un método de petición HTTP que envía algunos datos al servidor. Si realiza varias peticiones POST para un recurso concreto, pueden producirse efectos secundarios en sus datos. Por ejemplo, si desea añadir un artículo a una colección, si realiza varias solicitudes POST, se añadirán varios artículos a la colección, lo que dará lugar a artículos redundantes.
PUT es un método de solicitud HTTP que envía datos al servidor para un recurso concreto, pero sólo actualiza los datos una vez. Si envía varias solicitudes PUT para un recurso concreto, no se producirán efectos secundarios y los datos se añadirán una sola vez. En PUT, si el recurso no existe, creará uno nuevo, y si existe, actualizará el existente.
PUT es idempotente, mientras que POST no lo es.
¿Qué es una carga útil?
Respuesta: Una carga útil en una API REST es simplemente el cuerpo de la solicitud enviada desde el cliente al servidor. Son los datos que desea enviar al servidor y obtener una respuesta.
¿Cuál es el tamaño máximo de la carga útil que se puede enviar en los métodos Post?
Respuesta: No existe un límite predeterminado establecido por el propio protocolo HTTP. El límite puede depender del límite máximo del cliente o del servidor, cualquiera que sea el mínimo.
Al crear URI, ¿cuáles son las mejores prácticas que hay que seguir?
Respuesta: Algunos de los puntos clave que hay que tener en cuenta al diseñar las URI son:
- Evitar el uso de extensiones de archivo
- Sea coherente con todas las URI
- Divida las URI en dominios y subdominios para diferentes conjuntos de recursos
- Debe utilizar guiones o guiones bajos para separar palabras en frases incrustadas en URIs
- Debe utilizar la barra diagonal para indicar una jerarquía de recursos
- Codifique un URI utilizando la codificación adecuada
- Intente que el URI sea legible para el ser humano
¿Qué son los métodos idempotentes?
Respuesta: Los métodos HTTP idempotentes tienen el mismo efecto en el servidor a pesar de enviar múltiples peticiones idénticas. Por ejemplo, si envía varias peticiones DELETE idénticas para un recurso concreto, el recurso no cambiará en cada petición; se actualizará como si sólo se hubiera enviado una petición.
Algunos de los métodos idempotentes son:
- PUT
- DELETE
- GET
- HEAD
- OPCIONES
¿Qué es Postman?
Respuesta: Postman es una herramienta de desarrollo de APIs para desarrollar, modificar y probar APIs. Proporciona muchas características para construir y probar APIs rápidamente sin necesidad de configurar un cliente.
¿Qué son las cabeceras Cache-Control?
Respuesta: La cabecera Cache-Control consiste en instrucciones o directivas para configurar el almacenamiento en caché en navegadores y servidores. Indica al navegador o al servidor qué debe almacenar en caché y durante cuánto tiempo antes de ser solicitado a través de la red.
La cabecera Cache-Control incluye las siguientes directivas:-
- max-age
- no-cache
- private
- público
- no-store
- inmutable
Defina la mensajería en los servicios web RESTful.
Responda: La mensajería en los servicios web RESTful se refiere a que el cliente envía una Solicitud HTTP al servidor, a la que el servidor responde con una Respuesta HTTP. Esta comunicación entre el cliente y el servidor se denomina mensajería.
¿Cuál es la diferencia entre arquitectura monolítica, SOA y de microservicios?
Respuesta: En una arquitectura monolítica, todo se gestiona en un único lugar. El lado del cliente, el servidor y la base de datos se gestionan desde un único lugar. Por eso se conoce como monolítica, porque la palabra «monolito» se refiere a un único bloque o piedra.
SOA significa Arquitectura Orientada a Servicios. En esta arquitectura, los diferentes aspectos de la aplicación son gestionados por diferentes servicios, que también son software. Por tanto, se trata de una combinación de múltiples módulos de software de servicios. La integración es la parte clave de esta arquitectura.
La arquitectura demicroservicios es similar a la SOA, pero a diferencia de ésta, cuenta con múltiples programas de software autónomos que se comunican entre sí mediante API. A diferencia de la arquitectura monolítica, aquí todo es autónomo y, hasta cierto punto, independiente.
¿Cómo funciona la arquitectura de microservicios?
Respuesta: En una arquitectura de microservicios, las aplicaciones se dividen en subunidades más pequeñas que son independientes entre sí y funcionan por su cuenta, pero se comunican entre sí a través de un conjunto bien definido de API.
Algunas de las ventajas de la arquitectura de microservicios son la agilidad, la flexibilidad, la escalabilidad, las tecnologías independientes, los servicios reutilizables y la facilidad de despliegue.
¿Qué es CRUD?
Respuesta: CRUD son las siglas de Create (crear), Read (leer), Update (actualizar) y Delete (eliminar). Son las operaciones que se pueden realizar sobre un recurso concreto. La API que soporta todas estas operaciones se conoce como API CRUD. Estas son las operaciones más básicas que puede realizar una API sobre un recurso.
¿Qué es el almacenamiento en caché?
Respuesta: El almacenamiento en caché es una técnica que consiste en almacenar una respuesta o una solicitud en el cliente o en el servidor para volver a utilizarla más tarde.
Por lo general, las respuestas se almacenan en caché en el cliente porque si éste realiza la misma petición varias veces en un intervalo de tiempo corto, no tiene sentido volver a solicitar la respuesta a través de la red y malgastar el ancho de banda.
¿Para qué sirve @RequestMapping?
Respuesta: Es una anotación en el marco de trabajo de spring que se utiliza para mapear peticiones web a clases manejadoras y/o métodos manejadores específicos.
¿Qué hace @PathVariable?
Respuesta: La anotación @PathVariable del marco de trabajo spring se utiliza para extraer el valor de las variables de plantilla y asignar su valor a una variable de método.
Defina HttpMessageConverter.
Responda: Cuando una solicitud HTTP (o partes de ella) necesita ser convertida en un tipo necesario como argumento para un método manejador o cuando el valor devuelto por un método manejador necesita ser convertido de alguna manera para crear una respuesta HTTP, se utilizan los convertidores de mensajes HTTP.
¿Qué herramientas son necesarias para probar su API web?
Respuesta: Algunas herramientas que pueden ayudarle en las pruebas de la API son las siguientes:
- Postman
- Rest Assured
- Rest Sharp
- Katalon
- ReadyAPI
- Apigee
Palabras finales
Hoy en día, las API se han hecho extremadamente populares gracias a la llegada de Internet. Otra razón por la que las API REST son populares es que son fáciles de desarrollar y de utilizar.
Si se está preparando para una entrevista, tenga en cuenta las preguntas anteriores sobre las API REST que podrían formularle en su entrevista.
A continuación, puede comprobar cómo raspar un sitio web utilizando la API de raspado web de Geekflare.