2011-11-13 19 views
9

Estoy tratando de aclarar un concepto relacionado con la capacidad de descubrimiento REST, es decir, si la satisfacción de la restricción HATEOAS para un servicio RESTful significa que ahora los URI pueden cambiar, porque son detectables y no están documentados.¿la capacidad de descubrimiento REST y HATEOAS implican que puede cambiar los URI?

Eso parece no seguir el concepto de Cool URIs - el hecho de que los URI no cambian, nunca. También es algo inconsecuente con el modelo de la web en sí (que REST debería ajustarse perfectamente): el hecho de que las URL son bookmarkable y nunca cambian, y el hecho de que una vez que aprendes una, puedes ir directamente a ella y lo haces no tiene que pasar por la raíz y descubrirlo cada vez.

Se agradece cualquier comentario sobre esto.

Respuesta

6

Para URI geniales, no, no debería cambiarlas nunca. Ellos son los puntos de entrada a su sistema. Sin embargo, debe tener muy pocos de ellos si desea tener la capacidad de evolucionar el resto de la estructura de URI de su sistema en el futuro.

Para cualquier URI que no sea Cool, pueden cambiar con el tiempo. Hace poco escribí un blog post sobre este tema porque encuentro la capacidad de REST de permitirme desarrollar mi sistema a lo largo del tiempo para que sea increíblemente útil.

Asegúrate de que la documentación de tu API explique el hecho de que solo los pocos URI geniales en tu sistema deben ser codificados por los clientes, y cualquier otro URI debe descubrirse en tiempo de ejecución a través de hypermedia transversal. Piense en ellos como una dirección de puntero C: a nadie le importaría cuál es el valor hexadecimal de una variable de puntero, pero seguro que querrían que apuntara a un lugar válido en la memoria. Lo mismo ocurre con los URI que no son Cool: su estructura no importa, pero el hecho de que se recuperaron en tiempo de ejecución a través de las conversaciones con su servidor los hace válidos.

+0

Gracias por la rápida respuesta. He leído el artículo, pero todavía no tengo claro algunas cosas: primero, ¿no es para eso para lo que está la API? y segundo, ¿debería haber ALGUNA documentación? Tengo entendido que en una implementación RESTful pura, la documentación sería casi nula. ¿Sería mejor usar solo URL geniales y hacer una versión diferente de la API para un cambio tan radical? – Eugen

+1

La creación de versiones de una API puramente para mantener la compatibilidad de estructura URI conduce a los mismos problemas que tener un WSDL para cada versión de su servicio web: no está evolucionando su servicio, está agregando nuevas versiones (mayormente duplicadas) cada vez que tendrá que probar, mantener, documentar, etc. Hacer eso y despedirse de un gran beneficio de REST: la evolución dinámica de sus "contratos" y un maravilloso desacoplamiento entre el cliente y el servidor. –

+0

Y en cuanto a no tener documentación, seguro: cuando todo el mundo del software haya desarrollado experiencia con REST, tendrá mucho sentido. Siempre habrá novatos que quieran usar tu API, y no darles nada con lo que trabajar no tenga sentido para mí. Claro, un experto en REST probablemente podría sentarse y resolverlo todo, pero ese no es el mundo en el que vivimos.Documente sus tipos de medios y la semántica de cada recurso y proporcione un código de muestra que muestre cómo se deben construir los clientes bien construidos, y todo irá bien. –

0

Tiene que haber documentación. Los MediaTypes y las relaciones de enlace son un punto de acoplamiento y tanto el cliente como el servidor deben comprenderlo. Es por eso que HTML, ATOM y RSS tienen estándares.

En términos de funcionamiento, puedo ver que no tengo documentación. No necesito saber qué tiene Yahoo en su página de inicio porque puedo descubrirlo. De la misma forma que un cliente de mi servicio no necesita saber acerca de una nueva característica que lanzo. Pueden encontrar que el enlace existe y luego usar la relación de enlace para ver qué hace.

Así que la documentación está en torno a las normas y protocolos que se van a utilizar, pero no cómo la aplicación funcionará en sí

Cuestiones relacionadas