Descripción general de REST. Parte 1: ¿Qué es REST? En esta parte, profundizaremos en cómo se lleva a cabo la comunicación entre un cliente y un servidor. En el camino, descubriremos nuevos términos y los explicaremos.
Para asegurarnos de que todo esté claro, analizaremos la comunicación cliente-servidor usando una aplicación RESTful como ejemplo. Supongamos que estamos desarrollando una aplicación web que almacena información sobre los clientes y sus pedidos. En otras palabras, nuestro sistema puede realizar operaciones en ciertas entidades: crearlas, editarlas y eliminarlas, y mostrar información sobre ellas. Estas entidades serán:

- clientes (clientes)
- pedidos (pedidos de clientes)
- artículos (productos)
Peticiones
Las solicitudes de los clientes casi siempre se realizan mediante el protocolo HTTP. En general, las solicitudes HTTP constan de varios componentes:- método HTTP
- encabezamiento
- URI
- cuerpo de solicitud
URI y recursos
Los datos que los clientes reciben o modifican a través de solicitudes se denominan recursos. La comunicación cliente-servidor tiene que ver con la manipulación de recursos. En REST, los recursos son cualquier cosa a la que le puedas dar un nombre. En cierto sentido, son como clases en Java. En Java, podemos crear una clase para cualquier cosa. Entonces, en REST, un recurso puede ser cualquier cosa: un usuario, un documento, un informe, un pedido. Puede ser una abstracción de alguna entidad o algo específico, por ejemplo, una imagen, video, animación o archivo PDF. En nuestro ejemplo, tenemos 3 recursos:- clientes (clientes)
- pedidos (pedidos de clientes)
- artículos (productos)
- /clientes — URI de todos los clientes disponibles
- /customers/23 — URI de un cliente específico, es decir, el cliente con ID=23
- /customers/4 — URI de un cliente específico, es decir, el cliente con ID=4.
- /customers/4/orders — URI de todos los pedidos realizados por el cliente n.º 4
- /customers/1/orders/12 — URI del pedido n.° 12 realizado por el cliente n.° 1.
- /customers/1/orders/12/items — URI de la lista de todos los productos en el pedido No. 12 realizado por el cliente No. 1.
método HTTP
El método HTTP es una secuencia de cualquier carácter (excepto los caracteres de control y los delimitadores), que indica la operación principal que se está realizando en el recurso. Hay varios métodos HTTP comunes. Vamos a enumerar los que se utilizan con más frecuencia en los servicios RESTful:- GET — Obtener información sobre un recurso en particular (a través de su ID) o sobre una colección de recursos
- POST — Crear un nuevo recurso
- PUT — Cambiar un recurso (a través de su ID)
- DELETE — Eliminar un recurso (a través de su ID)
Encabezados
Las solicitudes, así como las respuestas, contienen encabezados HTTP. Transmiten información adicional sobre la solicitud (o respuesta). Los encabezados son pares clave-valor. Puede ver la lista de los encabezados más comunes en Wikipedia . En cuanto a REST, los clientes suelen enviar un encabezado "Aceptar" en las solicitudes al servidor. Este encabezado es necesario para decirle al servidor en qué formato el cliente espera recibir una respuesta. Se dan varios formatos en una lista de tipos MIME. MIME (Extensiones de correo de Internet multipropósito) 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
Este es el mensaje enviado por el cliente al servidor. Si la solicitud tiene un cuerpo o no, depende del tipo de solicitud HTTP. Por ejemplo, las solicitudes GET y DELETE generalmente no contienen ningún cuerpo de solicitud. Pero las solicitudes PUT y POST pueden, solo depende del propósito de la solicitud. Después de todo, para recibir y/o eliminar datos usando una ID (que se pasa en la URL), no necesita enviar datos adicionales al servidor. Pero para crear un nuevo recurso (a través de una solicitud POST), debe enviar el recurso. Lo mismo se aplica a la modificación de un recurso existente. En REST, el cuerpo de la solicitud suele enviarse en formato XML o JSON. El formato JSON es el más común. Supongamos que queremos enviar una solicitud al servidor para crear un nuevo recurso. Si no lo has olvidado, consideramos el ejemplo de 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 del cliente: Nombre, correo electrónico, número de teléfono. Entonces el cuerpo de la solicitud podría ser el siguiente JSON:{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+1 (222) 333-4444"
}
Juntando solicitudes
Entonces, hemos examinado lo que podría haber en la solicitud de un cliente. Ahora daremos algunos ejemplos de solicitudes junto con descripciones.Pedido | Descripción |
---|---|
|
Obtenga información sobre el cliente No. 23 en formato JSON o XML |
|
Cree un nuevo cliente con los siguientes campos: Nombre — Amigo Correo electrónico — amigo@jr.com Número de teléfono — +1 (222) 333-4444 |
|
Edite el cliente No. 1 de la siguiente manera: Nombre — Ben Correo electrónico — bigben@jr.com Número de teléfono — +86 (868) 686-8686 |
|
Eliminar el pedido N° 6 realizado por el cliente N° 12 del sistema |
Respuestas
Digamos algunas palabras sobre las respuestas del servidor. Una respuesta generalmente consta de las siguientes partes:- código de respuesta
- encabezados
- cuerpo de respuesta
Códigos de respuesta HTTP
Consideremos los códigos de respuesta HTTP con más detalle. Un código de estado HTTP es parte de la primera línea de una respuesta del servidor a las solicitudes realizadas a través del protocolo HTTP. Es un número entero que consta de tres dígitos decimales. El primer dígito indica la clase del código de estado de respuesta. El código de respuesta suele ir seguido de una frase explicativa en inglés, separada por un espacio. Esta frase es una razón legible por humanos para la respuesta. Ejemplos:- 201 Creado
- 401 no autorizado
- 507 Almacenamiento insuficiente
- 1XX — Informativo
- 2XX : estos códigos indican que la solicitud del cliente se recibió y procesó correctamente
- 3XX : estos códigos informan al cliente que se debe realizar una solicitud adicional, generalmente a un URI diferente, para completar con éxito la operación.
- 4XX : error del cliente. Dichos códigos pueden resultar de una solicitud redactada incorrectamente. Otro ejemplo es el conocido código "404 Not Found", que puede ocurrir cuando un cliente solicita un recurso inexistente
- 5XX : error del servidor. Estos códigos se devuelven al cliente si el servidor es responsable de la falla de la operación
GO TO FULL VERSION