2012-09-17 22 views
22

Uno de los puntos clave para crear una API RESTful es HATEOAS. Ahora, Jersey ofrece una capacidad de enlace que es bastante buena (ver this link). Pero he visto el borrador del HAL Specification y parece ser una obra bien pensada.Implementar HATEOAS con HAL en Jersey

Estoy interesado si hay alguna lib que hace que sea fácil adherirse a HAL en Jersey. He visto las referencias mencionadas en el borrador como https://github.com/HalBuilder. Pero estoy usando el mapeo directo de POJO y no sé cómo mezclar eso con Halbuilder.

Entonces, ¿hay alguna lib que incorpore HAL en Jersey? ¿O tal vez pueda usar algún tipo de filtro para mejorar los POJO generados manualmente? En caso afirmativo, ¿alguien puede darme una pista de dónde mirar para lograr esto?

+4

Oh Dios, otra especificación de alguien que piensa que los espacios de nombres son algo malo y que parece ser solo parcialmente consciente del trabajo existente en esta área. (No me molestes. No es tu culpa. Solo deprimir a tantas personas que nunca aprendan. Suspiro ...) –

+0

No hay problema, ¿quizás me puedes dar una pista sobre el trabajo existente? Soy nuevo en REST y trato de encontrar mi camino a su alrededor. – Sponiro

+0

@DonalFellows ¿Qué otro trabajo? ¿Te refieres a otro estándar para Hypermedia JSON?¿O que solo deberías usar XML para Hateoas? Entre GitHUB, Facebook, Google, etc., cada API RESTful parece usar un formato ligeramente diferente para representar enlaces de descubrimiento porque no existe un estándar para JSON. ¿Qué hay de malo con el uso de HAL o algo así como un estándar y luego tener una biblioteca como Halbuilder para que sea fácil de implementar? –

Respuesta

1

Incluso si esto no es realmente una respuesta, no había suficientes caracteres para ponerlo en un comentario :)

Si usted es realmente nuevo concepto de descanso, creo que usted está comenzando probablemente en el camino equivocado . No sé exactamente cuáles son sus requisitos, pero si solo quiere aprender, comience con un servicio REST fácil, use Web API desde .net o algo similar en Java (un servlet simple sería suficiente) e intente implementar un servicio que solo usa las herramientas entregadas por http (los verbos, el encabezado y la carga de la solicitud, el mensaje de respuesta). El libro de reglas de diseño de REST API de Marc Massé podría ser una buena referencia para aprender. Cree su propio protocolo de comunicación con POJO o POCO y una vez que realmente pueda hacer REST y cómo funciona, puede usar un marco para facilitar su trabajo.

Si comienza con un marco es posible que se pierda la esencia del concepto ...

espero que ayude!

+0

Solo puedo mencionar eso. Se enseña mucho en muchos niveles, sin entrar en el infierno del marco. Lo más importante que uno aprendería es cómo distinguir un buen marco de uno malo. –

0

Es muy poco lo que se requiere para cumplir con HAL. Te sugiero que muevas tu propia mini biblioteca donde envuelves tus POJO en objetos HAL. De esta forma obtendrás el código de la forma que te guste y será mucho más simple que HalBuilder.

2

No encuentro ningún soporte directo para esto en Jersey, pero debería haber formas de personalizar el marcador de marshal que Jersey usa para convertir tus POJO a JSON. (Ya sea mediante el uso de HalBuilder, o crear un código compatible con HAL de su preferencia)

Si utiliza jerseys JAXB based JSON support, echar un vistazo a BootstrapTypeConverterTest en el código fuente jettison que demuestra cómo un convertidor puede ser utilizado para cusomize salida JSON. Las conversiones de pruebas unitarias a/desde JSON deben ser una tarea simple y el proyecto de abandono tiene buenos ejemplos para observar.

Si usa Jerseys "POJO Support"-method, eche un vistazo a JacksonHowToCustomSerializers para obtener un ejemplo similar sobre cómo crear sus serializadores personalizados.

(Si JAXB está implicado, también puede hacer cosas interesantes como processing custom annotations.)

es probable que tenga una idea bastante buena de cómo los objetos (de entrada) Aspecto del producto y qué código JSON (salida) que espera, por lo que la creación de pruebas unitarias para estas conversiones debería ser una tarea relativamente simple.

+1

'halbuilder-jaxrs' ofrece una buena integración. No te olvides de registrar 'JaxRsHalBuilderSupport' como escritor del cuerpo del mensaje. –

+0

Voy con https://github.com/Nykredit/jackson-dataformathal, luce ligero y flexible. – sschrass

Cuestiones relacionadas