¿Cuáles son los beneficios de un servicio web RESTful?

8

Tarea académica ... Primero se nos dijo que generaramos un conjunto de .htmlarchivos estáticos que mostraran los resultados de las elecciones en varias divisiones administrativas. Luego nos dijeron que "modernizáramos" esto usando plantillas de Django. Justo, puedo ver los beneficios de tal enfoque.

Pero luego se nos dijo que "mordernizáramos" aún más esto haciendo que la aplicación sea "RESTful". Por lo que puedo decir, esto significa que el servidor solo puede exponer una API que responde a las solicitudes enviando datos sin procesar de los clientes en el formato JSON; el cliente, que es un sitio HTML + CSS + JS estático, debe recibir este JSON y luego construir dinámicamente la página web en el lado del navegador con JavaScript.

Dado que lamentablemente me perdí algunas conferencias, cuando esto debe haberse explicado, ¿alguien podría explicarme cuáles son los beneficios de este enfoque? Porque debo decir que solo puedo ver inconvenientes:

  • Los usuarios con JavaScript deshabilitado no podrán ver la página.
  • Corríjame si me equivoco, pero AFAIK los contenidos de dicho sitio difícilmente podrán ser indexados por Google.
  • Será imposible que los usuarios marquen los resultados de las elecciones en una división en particular. En cambio, cada vez que visiten el lado, tendrán que hacer clic para que JavaScript cargue los resultados de esa división en particular. O despliegue un bot Selenium que haga esto por ellos.
  • Rompe los botones del navegador hacia atrás / adelante.
gaazkam
fuente
Solo un punto más. Google ahora presenta la página como un navegador para indexar contenido. Por lo tanto, el contenido dinámico de su servicio REST se puede rastrear si entra en la página (al menos por Google AFAIK). . Comprender mejor las páginas web
Naresh Kumar

Respuestas:

13

Técnicamente, un servidor web que sirve páginas HTML es RESTful. Text / Html es una representación válida perfectamente válida , siempre que el tipo de medio esté configurado correctamente, de acuerdo con la interfaz uniforme . Simplemente no abuse de sus verbos (GET, POST, etc.) y siga a HATEOAS (es decir, utilice esencialmente una URL sensible que identifique un recurso de forma exclusiva) y bam es tranquilo.

Creo que lo que pregunta su profesor es que sus páginas web usan una API RESTful que a menudo devuelve json (pero de nuevo puede devolver cualquier tipo de medio que el cliente acepte ).

En cuanto a sus objeciones:

Los usuarios con JavaScript deshabilitado no podrán ver la página.

Bueno, no podrán obtener ningún contenido dinámico. La página aún puede contener contenido estático.

Corríjame si me equivoco, pero AFAIK los contenidos de dicho sitio difícilmente podrán ser indexados por Google.

El contenido estático, incluidas las metaetiquetas, aún se puede rastrear sin problemas.

Será imposible que los usuarios marquen los resultados de las elecciones en una división en particular. En cambio, cada vez que visiten el lado, tendrán que hacer clic para que JavaScript cargue los resultados de esa división en particular. O despliegue un bot Selenium que haga esto por ellos. Rompe los botones del navegador hacia atrás / adelante.

Nah Si sigue correctamente a HATEOAS, la URL debe proporcionar toda la información de estado requerida para representar la página, y si está en la URL, se puede marcar como favorito.

John Wu
fuente
Gracias, pero hay una cosa que no entiendo. Si la URL contiene toda la información, entonces estoy enviando una solicitud al servidor para obtener todos los resultados de las elecciones para esta división administrativa, y si sigo la especificación de la tarea, obtendré un JSON ... No, según los requisitos, Debo rastrear este JSON XMLHttpResponse, lo que no afecta lo que se muestra en la barra de direcciones del navegador. Entonces, para cualquier división administrativa que vea los resultados de las elecciones, la URL que se puede marcar es la misma y apunta a la página principal.
gaazkam
44
Cierto. si su javascript realiza cambios dinámicos en la página, normalmente la URL no se actualizará para coincidir. Pero puede hacerlo coincidir si los marcadores son importantes. Vea pushState y replaceState y posiblemente location.hash para conocer los medios para hacerlo.
John Wu
1
Y en realidad, si está utilizando el estado de inserción correctamente, Google también rastreará el contenido dinámico: newmediacampaigns.com/blog/…
Paul
2
+1 (particularmente por mencionar que las respuestas html pueden ser RESTful), pero ¿las arañas de Google no han estado ejecutando JavaScript desde hace algún tiempo?
RubberDuck
Desacoplamiento de frontend y backend con un sistema API de comunicación estándar.
sgargel
0

Es una distinción sutil, pero está pasando de una página web a una aplicación web. En una página web, el servidor y el cliente están estrechamente acoplados; su única opción para ver información es a través de la página web.

Al mover los datos a un servicio web RESTful, la vista (lo que solía ser la página web) y el modelo (los datos) se desacoplan por completo, y aumentan sus opciones para interactuar con los datos.

PerryD
fuente
0

Una API REST, como cualquier API, hace que los recursos estén disponibles en una interfaz legible por máquina que cualquier cliente puede usar.

Si usa esa API para construir su sitio web, es una de las muchas aplicaciones posibles que usan el mismo servicio.

Las ventajas del estilo REST son: - use un protocolo existente (aquí HTTP) para intercambiar los datos - use tipos de medios definidos para intercambiar recursos.

Esto significa que otros desarrolladores pueden usar el conocimiento y las herramientas existentes para usar su API.

Kwebble
fuente