Spring + (qué biblioteca) para JSON REST API

Estoy buscando hacer una API REST en el trabajo y me gustaría algo que se integre bien con Spring. Miré varios y quería ver si me perdí algo y obtener la opinión de las personas más informadas.

Así que aquí están mis requisitos básicos...

  • Integración (o al menos no conflicto con Spring 3.1+)
  • Enlace hipermedia (de una forma u otra, incluso si se trata solo de campos de cadena basados ​​en una plantilla)
  • Soporte JSON (XML también sería bueno)

Un requisito más…

Mapeo hacia/desde JSON. Este ha sido el mayor escollo hasta ahora. Veo una gran cantidad de marcos que admiten la clasificación a/formar JSON, pero todo es clasificación POJO directa. Como ejemplo, es posible que desee proporcionar una representación diferente de un objeto para diferentes solicitudes.

Digamos que quiero una lista de todos los dueños de mascotas, probablemente solo quiera una lista de personas y sus nombres, con un enlace a sus mascotas. Pero si alguna otra solicitud fuera específicamente para un propietario, me gustaría incluir sus mascotas (como hijos del objeto del propietario) como parte de la respuesta.

¿Hay una buena manera de hacer esto y definir ese tipo de mapeo, o simplemente tiene que crear POJO con diferentes anotaciones y transferirles datos de las entidades? Básicamente, ¿crear un conjunto de DTO para representar los datos para diferentes solicitudes?

preguntado el 31 de julio de 12 a las 15:07

Puede estar interesado en el enlace JSON en EclipseLink MOXy (ver: blog.bdoughan.com/2011/08/…). MOXy ofrece mapeo basado en rutas y un documento de mapeo externo que facilita la aplicación de múltiples representaciones (consulte: blog.bdoughan.com/2011/09/…). Nota: Soy el líder de MOXy. -

Esto se ve fantástico, y el enlace JSON es exactamente lo que estaba pensando que ya debería existir pero no había podido encontrar. -

2 Respuestas

Spring MVC probablemente cumpla con todos sus requisitos; aquí hay una buena referencia: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html

Respondido 31 Jul 12, 15:07

¿Puedes darme una mejor idea de cómo harías exactamente lo que estoy tratando de hacer? Lo he revisado antes y entiendo cómo puedo hacer fácilmente lo que quiero, excepto por el enlace OXM diferente según la solicitud. Incluso con spring oxm, parece que define un mapeo singular para usar en todas las situaciones. - Danny Parker2002

Spring MVC se integra muy bien con Jackson para convertir POJO a json y viceversa. Para personalizar la salida, el único mecanismo que ofrece Jackson es especificar serializadores y deserializadores personalizados: wiki.fasterxml.com/JacksonHowToCustomSerializers. Si está buscando mucho control, entonces sí, algo como lo que Blaise ha sugerido se ve muy bien, y será muy fácil de usar simplemente con Spring MVC. - Biju Kunjummen

Simplemente pensé que debería actualizar esto para que la gente pueda ver con qué terminé. Decidí simplemente usar MOXy y devolver la respuesta esperada con @ResponseBody ya que solo tengo algunas llamadas a la API. En casa, y en el futuro, me gustaría escribir mi propio HttpMessageConverter para permitirme usar MOXy como JSON/XML marshelling. - Danny Parker2002

Escribí algunas publicaciones de blog relacionadas con REST y HATEOAS usando Spring Framework: Servicios CRUD RESTful usando Spring Framework y HATEOAS usando Spring Framework - Andrei Zagorneanu

  1. Crea tus entidades (ejemplo Person.java)
  2. Use Spring Data JPA y cree interfaces para generar automáticamente Repositorios/DAO para esas entidades (ejemplo, PersonRepository.java)
  3. Use Spring Data REST para exportar sus repositorios de Spring Data como un servlet HATEOAS/RESTful (explorar /persons dirección URL)

No tiene que escribir ningún código para los Repositorios/DAO. Spring Data JPA escribirá su DAO por usted. Todo lo que tienes que hacer es crear una interfaz muy básica.

No tienes que escribir ningún controlador. Spring Data REST exportará todos sus Repositorios utilizando su propio servlet.

Mientras lo hace, use hbm2java de Hibernate para crear sus entidades a partir del esquema de su base de datos y cree también sus repositorios Spring Data JPA.

Respondido 24 Feb 14, 07:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.