Esta es una pregunta más sobre la estrategia de arquitectura de servicio, estamos construyendo un gran sistema web basado en servicios de descanso en back-end. Y actualmente estamos tratando de construir algunos estándares internos a seguir mientras desarrollamos servicios de descanso.Arquitectura de servicios RESTful pregunta
Algunas consultas lista de entidades devoluciones, por ejemplo, permite considerar que tenemos galerías de imágenes recuperación de servicio:/gell_all_galeries, volviendo respuesta siguiente:
<galleries>
<gallery>
<id>some_gallery_id</id>
<name>my photos</name>
<photos>
<photo>
<id>123</id>
<name>my photo</name>
<location>http://mysite/photo/show/123</location>
......
<author>
<id>some_id</id>
<name>some name</name>
.......
<author>
</photo>
<photo> ..... </photo>
<photo> ..... </photo>
<photo> ..... </photo>
<photo> ..... </photo>
</photos>
</gallery>
<gallery> .... </gallery>
<gallery> .... </gallery>
<gallery> .... </gallery>
<gallery> .... </gallery>
</galleries>
Como se ve aquí, la respuesta bastante grande y pesado, y no siempre necesitamos un nivel de información tan profundo. solución habitual es usar o http://ru.wikipedia.org/wiki/Atom elementos para cada galería en lugar de datos completos galería:
<galleries>
<gallery>
<id>some_gallery_id</id>
<link href="http://mysite/gallery/some_gallery_id"/>
</gallery>
<gallery>
<id>second_gallery_id</id>
<link href="http://mysite/gallery/second_gallery_id"/>
</gallery>
<gallery> .... </gallery>
<gallery> .... </gallery>
<gallery> .... </gallery>
<gallery> .... </gallery>
</galleries>
La primera pregunta, es lo siguiente: tal vez ni siquiera deberíamos usar y tipos, y sólo tiene que utilizar genéricos y de todos los recursos Esa lista retorno de objetos:
<list>
<item><link href="http://mysite/gallery/some_gallery_id"/></item>
<item><link href="http://mysite/gallery/other_gallery_id"/></item>
<item>....</item>
</list>
Y la segunda pregunta, cuando el usuario intenta recuperar información sobre alguna galería de concreto, que va a utilizar, por ejemplo, http://mysite/gallery/some_gallery_id enlace, ¿qué debe ver como los resultados?
Si fuese:
<gallery>
<id>some_gallery_id</id>
<name>my photos</name>
<photos>
<photo>
<id>123</id>
<name>my photo</name>
<location>http://mysite/photo/show/123</location>
......
<author>
<id>some_id</id>
<name>some name</name>
.......
<author>
</photo>
<photo> ..... </photo>
<photo> ..... </photo>
<photo> ..... </photo>
<photo> ..... </photo>
</photos>
</gallery>
o:
<gallery>
<id>some_gallery_id</id>
<name>my photos</name>
<photos>
<photo><link href="http://mysite/photo/11111"/></photo>
<photo><link href="http://mysite/photo/22222"/></photo>
<photo><link href="http://mysite/photo/33333"/> </photo>
<photo> ..... </photo>
</photos>
</gallery>
o
<gallery>
<id>some_gallery_id</id>
<name>my photos</name>
<photos>
<photo>
<link href="http://mysite/photo/11111"/>
<author>
<link href="http://mysite/author/11111"/>
</author>
</photo>
<photo>
<link href="http://mysite/photo/22222"/>
<author>
<link href="http://mysite/author/11111"/>
</author>
</photo>
<photo>
<link href="http://mysite/photo/33333"/>
<author>
<link href="http://mysite/author/11111"/>
</author>
</photo>
<photo> ..... </photo>
</photos>
</gallery>
quiero decir si utilizamos enlace en lugar de información completa del objeto, qué tan profundo que deberíamos ir allí ? ¿Debo mostrar un autor dentro de una foto, etc.?
Probablemente mi pregunta sea ambigua, pero lo que estoy tratando de hacer es crear una estrategia general en tales casos para que todos los miembros del equipo la sigan en el futuro.
Estoy usando Java y Apache CXF para servir un servicio RESTful. Eso tiene la ventaja de poder servir * tanto * XML como JSON para el mismo recurso, dependiendo de lo que el cliente dice que prefiere (es decir, a través de la negociación de contenido). –