Parte 1: ¿Qué es REST? En esta parte veremos más de cerca cómo se produce la comunicación entre el cliente y el servidor. A lo largo del camino, revelaremos nuevos términos y les daremos explicaciones. Para que todo quede claro, analizaremos la comunicación cliente-servidor usando el ejemplo de alguna aplicación RESTful. Digamos que estamos desarrollando una aplicación web que es capaz de almacenar información sobre los clientes y sus pedidos. Aquellos. nuestro sistema es capaz de manipular algunas entidades: crearlas, editarlas, eliminarlas y proporcionar información sobre ellas. Estas entidades serán:
- clientes - clientes;
- pedidos - pedidos de clientes;
- artículos - bienes.
Peticiones
Las solicitudes de los clientes casi siempre se realizan a través de HTTP. En general, las solicitudes HTTP constan de varios componentes:- método HTTP;
- título;
- URI;
- cuerpo de la solicitud.
URI y recursos
Los datos que los clientes obtienen o modifican a través de solicitudes se denominan recursos. La base de la interacción cliente-servidor es la manipulación de recursos. Los recursos en REST son cualquier cosa a la que se le pueda dar un nombre. En cierto sentido, son como clases en Java. En Java podemos crear una clase para cualquier cosa. Lo mismo ocurre en REST: un recurso puede ser cualquier cosa: un usuario, un documento, un informe, un pedido. Todo esto puede ser una abstracción de alguna entidad o algo concreto, por ejemplo, un archivo: una imagen, un video, una animación, un archivo PDF. Para nuestro ejemplo, tenemos 3 recursos:- clientes - clientes;
- pedidos - pedidos de clientes;
- artículos - bienes.
- /clients - URI de todos los clientes existentes;
- /clients/23 - URI de un cliente específico, es decir, el cliente con ID=23;
- /clients/4: URI de un cliente específico, es decir, el cliente con ID=4.
- /clients/4/orders — URI de todos los pedidos del cliente nº 4;
- /clients/1/orders/12 - URI del pedido nº 12 del cliente nº 1.
- /clients/1/orders/12/items: URI de la lista de todos los productos del pedido nº 12 realizado por el cliente nº 1.
método HTTP
El método HTTP (método HTTP en inglés) es una secuencia de cualquier carácter, excepto controles y separadores, que indica la operación principal en un recurso. Existen varios métodos HTTP comunes. Enumeramos los que se utilizan con mayor frecuencia en los servicios RESTful:- GET: se utiliza para obtener información sobre un recurso específico (a través de ID) o una colección de recursos;
- POST: se utiliza para crear un nuevo recurso;
- PUT: se utiliza para cambiar un recurso (a través de ID);
- ELIMINAR: se utiliza para eliminar un recurso (a través de ID).
Encabezamientos
Las solicitudes, así como las respuestas, contienen encabezados HTTP. Envían información adicional sobre la solicitud (o respuesta). Los encabezados son pares clave-valor. Puede leer la lista de los títulos más comunes en la página de Wikipedia . Con REST, los clientes a menudo pueden enviar un encabezado de aceptación en su solicitud al servidor. Es necesario que el servidor sepa en qué formato el cliente espera recibir una respuesta de él. En la llamada lista de tipos MIME se presentan varias opciones de formato. MIME (Extensiones multipropósito de correo de Internet) es una especificación para codificar información y formatear mensajes para que puedan enviarse a través de Internet. Cada tipo MIME consta de dos partes, separadas por una barra: un tipo y un subtipo. Ejemplos de tipos MIME para diferentes tipos de archivos:- texto - texto/sin formato, texto/css, texto/html;
- imagen - imagen/png, imagen/jpeg, imagen/gif;
- audio - audio/wav, audio/mpeg;
- vídeo - vídeo/mp4, vídeo/ogg;
- aplicación: aplicación/json, aplicación/pdf, aplicación/xml, aplicación/octet-stream.
Accept:application/json
Este encabezado le dice al servidor que el cliente espera recibir una respuesta en formato JSON.
Cuerpo de la solicitud
Un mensaje enviado por el cliente al servidor. Si una solicitud tiene cuerpo o no depende del tipo de solicitud HTTP. Por ejemplo, las solicitudes GET y DELETE normalmente no contienen ningún cuerpo de solicitud. Pero PUT y POST pueden contener: se trata del propósito funcional del tipo de solicitud. Después de todo, para recibir datos y eliminarlos por identificación (que se transmite en la URL), no es necesario enviar datos adicionales al servidor. Pero para crear un nuevo recurso (solicitud POST), debe transferir este recurso. Lo mismo ocurre con la modificación de un recurso existente. En REST, los formatos XML o JSON se utilizan con mayor frecuencia para transmitir el cuerpo de la solicitud. El formato más común es JSON. Supongamos que queremos enviar una solicitud al servidor y en ella crear un nuevo recurso. Si recuerdas, como ejemplo miramos una aplicación que gestiona los pedidos de los clientes. Digamos que queremos crear un nuevo cliente. En nuestro caso, almacenamos la siguiente información sobre los clientes: Nombre Correo electrónico Número de teléfono Entonces el cuerpo de dicha solicitud podría ser el siguiente JSON:{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
Reunir solicitudes
Entonces, hemos visto en qué puede consistir la solicitud de un cliente. Demos ahora algunos ejemplos de consultas con descripciones.Pedido | Descripción |
---|---|
|
Obtener información del cliente nº 23 en formato json o xml |
|
Cree un nuevo cliente con los siguientes campos: Nombre - Amigo Email - amigo@jr.com Tel. — +7 (191) 746-43-23 |
|
Edite el cliente n.º 1 de la siguiente manera: Nombre: Ben Correo electrónico: bigben@jr.com Tel. — +380 (190) 346-42-13 |
|
Eliminar el pedido No. 6 del cliente No. 12 del sistema |
Respuestas
Digamos algunas palabras sobre las respuestas del servidor. La respuesta suele constar de las siguientes partes:- código de respuesta;
- encabezados;
- cuerpo de respuesta.
Códigos de respuesta HTTP
Echemos un vistazo más de cerca a los códigos de respuesta HTTP. Aquí hay una cita de Wikipedia: El código de estado HTTP es parte de la primera línea de la respuesta del servidor para solicitudes a través del protocolo HTTP. Es un número entero con tres dígitos decimales. El primer dígito indica la clase de la condición. El código de respuesta suele ir seguido de una frase explicativa en inglés separada por un espacio, que explica a la persona el motivo de esa respuesta en particular. Ejemplos:- 201 Creado;
- 401 No autorizado;
- 507 Almacenamiento insuficiente.
- 1ХХ - informativo;
- 2ХХ - informar sobre los casos de aceptación y procesamiento exitosos de la solicitud de un cliente;
- 3XX : informa al cliente que para completar con éxito la operación, es necesario realizar otra solicitud, generalmente utilizando un URI diferente;
- 4ХХ - error del cliente. Por ejemplo, una solicitud construida incorrectamente o el conocido código 404 No encontrado, que puede ocurrir cuando un cliente solicita un recurso inexistente;
- 5ХХ - error del servidor. Devuelto al cliente si la operación falla por culpa del servidor.
GO TO FULL VERSION