Introducción a la API REST - Servicios web RESTful

Este artículo es una introducción a los servicios web RESTful y una descripción general de REST y HTTP.

Ella comienza una serie de publicaciones sobre el desarrollo de la API REST:

  • Introducción a la API REST - Servicios web RESTful
  • Diferencias entre REST y SOAP
  • Desarrollo de API REST: ¿qué es Contract First (contrato primero)?
  • Desarrollo de API REST: ¿qué es Code First (código primero)?
  • API REST - ¿Qué es HATEOAS?
  • Recomendaciones API REST: ejemplos de diseño de servicios web en Java y Spring



REST significa REpresentational State Transfer (Wikipedia: "transferencia de estado de presentación"). Este es un enfoque arquitectónico popular para crear API en el mundo moderno.

Aprenderás:


  • ¿Qué es REST?
  • ¿En qué se basa la API REST?
  • ¿Cómo se usa HTTP al crear una API REST?
  • ¿Qué es un recurso?
  • ¿Cómo define los recursos de la API REST?
  • ¿Cuáles son las mejores prácticas para desarrollar una API REST?

¿Qué es REST?


REST significa transferencia de estado representativa. Fue un término originalmente acuñado por Roy Fielding, quien también fue uno de los creadores del protocolo HTTP. Una característica distintiva de los servicios REST es que hacen el mejor uso del protocolo HTTP. Ahora echemos un vistazo rápido a HTTP.

Descripción general de HTTP


Primero abramos el navegador y vayamos a la página web:



Y luego haga clic en una de las páginas de resultados:



A continuación, podemos hacer clic en el enlace de la página en la que estamos:



Y ve a otra página:



Así es como solemos navegar por la web.

Cuando navegamos por Internet, suceden muchas cosas detrás de escena. La siguiente es una vista simplificada de lo que sucede entre el navegador y los servidores que se ejecutan en los sitios web que visitan:



Protocolo HTTP


Cuando ingresa una URL en el navegador, por ejemplo www.google.com , se envía una solicitud al servidor al servidor especificado en la URL. Entonces este servidor forma y emite la respuesta. El formato de estas solicitudes y respuestas es importante. Estos formatos están definidos por el protocolo HTTP Hyper Text Transfer Protocol .

Cuando escribe la URL en el navegador, envía una solicitud GET al servidor especificado. El servidor luego responde con una respuesta HTTP que contiene datos HTML: lenguaje de marcado de hipertexto . El navegador recibe este código HTML y lo muestra en la pantalla.

Suponga que completa un formulario en una página web con una lista de elementos. En este caso, cuando hace clic en el botón Enviar , la solicitud HTTP POST se envía al servidor.

Servicios web HTTP y RESTful


HTTP proporciona una capa básica para crear servicios web. Por lo tanto, es importante entender HTTP. Aquí hay algunas abstracciones clave.

Recurso


Un recurso es una abstracción clave en la que se concentra el protocolo HTTP. Un recurso es todo lo que desea mostrar al mundo exterior a través de su aplicación. Por ejemplo, si escribimos una aplicación de administración de tareas, las instancias de recursos serán las siguientes:

  • Usuario específico
  • Tarea específica
  • Lista de tareas

URI de recursos


Cuando desarrolle servicios RESTful, debe centrarse en los recursos de la aplicación. La forma en que identificamos un recurso para proporcionar es asignarle un URI, el identificador universal de recursos. Por ejemplo:

  • Crear usuario: POST / usuarios
  • Eliminar usuario: ELIMINAR / usuarios / 1
  • Obtenga todos los usuarios: GET / usuarios
  • Obtenga un usuario: GET / users / 1

RESTO y Recursos


Es importante tener en cuenta que con REST debe pensar en la aplicación en términos de recursos:
Determine qué recursos desea abrir al mundo exterior.
Utilice verbos ya definidos por el protocolo HTTP para realizar operaciones en estos recursos.

Así se implementa el servicio REST:

  • Formato de intercambio de datos : no hay restricciones. JSON es un formato muy popular, aunque se pueden usar otros como XML.
  • Transporte : siempre HTTP. REST está completamente basado en HTTP.
  • Definición del servicio : no existe un estándar para esto, y REST es flexible. Esto puede ser un inconveniente en algunos escenarios, ya que una aplicación que consume puede necesitar comprender los formatos de solicitud y respuesta. Sin embargo, los lenguajes de definición de aplicaciones web como WADL (Lenguaje de definición de aplicaciones web) y Swagger son ampliamente utilizados.

REST se centra en los recursos y en la eficiencia con la que realiza operaciones con ellos utilizando HTTP.

Componentes HTTP


HTTP define la siguiente estructura de solicitud:

  • línea de solicitud ( línea de solicitud ): define el tipo de mensaje
  • encabezados de solicitud ( campos de encabezado ): caracterizan el cuerpo del mensaje, los parámetros de transmisión y otra información
  • cuerpo del mensaje ( cuerpo ) - opcional

HTTP define la siguiente estructura para un mensaje de respuesta:

  • línea de estado incluyendo código de estado y mensaje de razón
  • campos de encabezado de respuesta
  • cuerpo adicional del mensaje ( cuerpo )

Métodos de solicitud HTTP


El método utilizado en la solicitud HTTP indica qué acción desea realizar con esta solicitud. Ejemplos importantes:

  • OBTENGA : obtenga información detallada de los recursos
  • POST : crea un nuevo recurso
  • PUT : actualizar un recurso existente
  • BORRAR : Eliminar recurso

Código de estado de respuesta HTTP


El código de estado siempre está presente en la respuesta HTTP. Ejemplos tipicos:

  • 200 - éxito
  • 404 - página no encontrada

Sobre este tema hay un video del autor.

Resumen


Este artículo proporciona una descripción general de alto nivel del estilo arquitectónico REST. Se enfatiza el hecho de que HTTP es el bloque de construcción principal de los servicios REST. HTTP es un protocolo que se utiliza para determinar la estructura de las solicitudes y respuestas del navegador. Hemos visto que HTTP trata principalmente con recursos disponibles en servidores web. Los recursos se identifican usando un URI, y las operaciones en estos recursos se realizan usando verbos definidos por el protocolo HTTP.

Finalmente, observamos cómo los servicios REST hacen el mejor uso de las características que ofrece HTTP para proporcionar recursos al mundo exterior. REST no impone ninguna restricción en los formatos de presentación de recursos o en la definición de un servicio.

Lectura adicional


Fundamentos de la arquitectura RESTful
Desarrollando API REST

Source: https://habr.com/ru/post/483202/


All Articles