2010-06-10 4 views
6

Esta pregunta es un poco larga, por favor tengan paciencia conmigo. En REST, creo que no deberíamos necesitar WADL ni ningún IDL. Pero más bien algo que implícitamente cubriría su concepto. La forma en que pienso es cuando nosotros (los humanos) navegamos por la Web, cuando vamos a un sitio web por primera vez, no sabemos qué servicios ofrece. Usted descubre en la página de inicio de html (o una página de mapa del sitio en la sección de ayuda) o tal vez solo el menú principal en la página de inicio. Si hace una analogía, la página de inicio o el mapa del sitio para nosotros los humanos es lo que WSDL es para WS- * o lo que podría ser WADL para un servicio REST. Solo que es como cualquier otro contenido html. Creo que en REST, la siguiente es una buena forma de hacer las cosas, respetando el paradigma HATEOS. Tenga un recurso de nivel superior (o predeterminado) que enumera los enlaces a sus otros recursos. Para un ejemplo de la biblioteca, por ejemplo RestLibrary.com/ podría ser algo como:En REST: WADL o no IDL, ¿el siguiente enfoque es correcto?

<root xmlns:lib="http://librarystandards.com/libraryml"> 
<resource class="lib:book"> 
    <link type="application/vnd.libraryml+xml" template="mylib.com/book/{isbn}" /> 
    <link type="application/vnd.libraryml+xml" rel="add" href="mylib.com/book" method="POST" /> 
    <link type="application/vnd.libraryml+xml" rel="update" template="mylib.com/book/{isbn}" method="PUT" /> 
</resource> 
<resource class="lib:bookList"> 
    <link template="mylib.com/book?keywords={keywords}" type="application/vnd.openlibrary+xml" rel="search" /> 
</resource> 
</root> 

Tenga en cuenta que se supone que el tipo de medio "application/xml vnd.libraryml +" es un estándar o definido (puede ser justo vocabulario propio) llamado libraryml. Además, el cliente debe ser capaz de entender este recurso de "página de inicio" (elementos raíz, recurso y enlace). Esta es la parte que podría usarse en lugar de WADL: un vocabulario abstracto que debería ser comprensible para cualquier cliente. Podría usar un estándar existente como Atom, por ejemplo. Pero la idea principal es tener un vocabulario abstracto comprensible para cualquier cliente. ¿Por qué no WADL entonces? bien wadl es solo para descubrimiento de servicio. La idea aquí es tener un ligero vocabulario abstracto que sirva de base para hipermedios. Un vocabulario "raíz". Como en owl tenemos owl: thing ... etc Ahora, si el cliente conoce el estándar "libraryml" puede seguir los enlaces a las cosas que entiende (después de analizar las propiedades de tipo de medios y xmlns). Si no, simplemente no lo hará.

Cuando no puedo entender cómo tratar con algo en la arquitectura REST, tiendo a ver cómo lo hacemos los humanos en la Web. En la Web, tenemos el lenguaje genérico que es HTML que permite a los creadores de sitios entregar cualquier contenido específico, independientemente de su significado para el cliente (el usuario), los navegadores entienden el HTML pero no el "significado" de su contenido. Es el usuario el que comprende el contenido (específico del dominio). Si voy a decir QuantumPhysics.org, mi navegador puede mostrar la página de inicio (es solo html después de todo) y puedo leer la página de inicio. Si entiendo cuántica, entonces puedo continuar navegando. Si no lo hago yo sólo salgo (a menos que quiera aprender el hardway :))

  • En el ejemplo RetsLibrary.com la aplicación cliente es igual que yo + mi navegador
  • en QuantumPhysics.org . el tipo de medio "application/vnd.libraryml + xml" es física cuántica (conocimiento).
  • http es http en ambos ejemplos.
  • Ahora HTML de QuantumPhysics.org está en RestLibrary.com es XML + esa pequeña poco vocabulario abstracto (raíz recurso y acoplamiento, que se puede sustituir con algo como Atom).

¿Tiene este enfoque algún valor? ¿No necesitamos un hipertexto minúsculo para que podamos tener éxito con hypermedia y el concepto de "URI inicial"?

editar Sí, ¿por qué no RDF as the root vocabulary!

Respuesta

4

Sí, definitivamente veo la necesidad de este tipo de medios.

Estábamos hablando de este tipo exacto de cosas en el canal IRC RESTO freenode el otro día después de que Mike Kelly sugirió la necesidad de un "Hipermedia Idioma de la aplicación" application/hal + xml

Ver http://restafari.blogspot.com/2010/06/please-accept-applicationhalxml.html para un ejemplo.

RDF parece exagerado para este tipo de cosas, pero me alegraría que se demostrara que estaba equivocado. Encuentro RDF más centrado en Datos Vinculados que HATEOAS.

+0

Gracias por el enlace Darrel. ¡Es bueno saber que algunas personas también están pensando en esto! – redben

+0

Me alegra que hayas decidido venir y verificar el canal de IRC. ¡Llegar de nuevo! –

Cuestiones relacionadas