2012-02-29 10 views
22

Necesito construir el lado del servidor de una API JSON-REST, y he estado jugando con Jersey para hacerlo (usando su función de mapeo JSON-POJO).¿Una mejor alternativa a Jersey/Jackson para construir API JSON REST?

El problema es que incluso la prueba del caso de uso más simple ha requerido varias preguntas aquí en SO, y bastante de caza. En resumen, no es una API muy fluida en el estilo de, digamos, JSoup, parece ser una herramienta que proviene de la época en que todo era XML, y luego fue adaptada para JSON.

Puede ver esto, por ejemplo, en el requerimiento de que los objetos POJO necesitan ser anotados con @XmlRootElement aunque nada de lo que estoy haciendo involucre XML.

Me pregunto si hay otras bibliotecas, quizás más recientes, que debería considerar para esto que podrían ser más fáciles de usar que Jersey.

+10

¡SÍ! ¡SÍ! POR EL AMOR DE DIOS ¡SÍ! He estado haciendo este mismo tipo de preguntas una y otra vez y sigo obteniendo poco a cambio. Incluso renuncié a una recompensa de 300 puntos y todavía nada: [aquí] (http://stackoverflow.com/questions/6986365/java-rest-client-jax-rs-automatic-type-mapping). [Y este fue divertido.] (Http://stackoverflow.com/questions/6312030/cxf-no-message-body-writer-found-for-class-automatically-mapping-non-simple-r). No sé por qué aún no tenemos atados los servicios web en Java. – javamonkey79

Respuesta

3

para convertir json en pojos: gson y jackson. Para Restful usaría spring o restlet.

+0

Sí, estoy muy familiarizado con Gson, y Jersey ya usa Jackson, pero la conversión de JSON hacia y desde POJOs es solo una parte del problema, estoy buscando una alternativa a Jersey, que es un marco para construir REST- API API. Si existiera, preferiría un marco HTTP que funcionara con Gson en lugar de Jersey, ya que estoy más cómodo con él. – sanity

+1

@sanity oh, spring then – NimChimpsky

4

Recomiendo encarecidamente JBoss RESTEasy para la API REST. Lo he usado en un par de proyectos y me pareció trivial configurarlo. También se integra muy bien con Spring si lo necesitas.

He usado tanto Jackson como Gson para el soporte JSON con RESTEasy y es bastante simple. Todo lo que hace es anotar un POJO con anotaciones JAXB e incluir las bibliotecas adecuadas.

Otra gran parte de RESTEasy es la buena compatibilidad con los datos de formularios de varias partes. Proporcionan una anotación @MultipartForm que le permite vincular un formulario de varias partes a un POJO sin escribir ningún código ... funciona bien.

Recomendaría contra Spring MVC para REST porque no es compatible con JAX-RS. El uso de una interfaz compatible con JAX-RS le brinda una portabilidad un poco mejor si decide cambiar a una implementación diferente más adelante.

+0

Hmm, no estoy seguro, parece que espera ser desplegado en un archivo de guerra, y preferiría evitar un contenedor de servlets pesado y toda esa infraestructura, la API es solo una pequeña como parte de mi proyecto, no quiero meter todo en una guerra solo para poder soportar la API: -/ – sanity

+0

¡Corre en el embarcadero ... será liviano! –

0

Como NimChimpsky mentioned Restlet lo hará fuera de la caja. Además, si su cliente también es Java, puede abstraer la funcionalidad en una interfaz y envolverla con un proxy del lado del cliente con bastante facilidad. Esta página de tutorial muestra cómo hacer lo que he mencionado here.

9

Jersey puede serializar POJOs a JSON sin ninguna anotación con Jackson. Usted configura esto configurando la propiedad JSONConfiguration.FEATURE_POJO_MAPPING en true.

En web.xml, añadir el siguiente parámetro servlet init:

<init-param> 
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
    <param-value>true</param-value> 
</init-param> 

See the Jersey documentation

+0

Tenga en cuenta que la documentación de Jersey2 que utiliza Jackson es muy pobre/falta de información/fecha. Eche un vistazo a esta pregunta y responda http://stackoverflow.com/questions/17511268/cant-enable-pojo-based-json-binding-support-for-jackson-in-jersey-2-0. –

1

Esta es una respuesta sesgo, pero que han estado utilizando la nieve para toda nuestra empresa & aplicación social y es extremadamente ligero , totalmente basado en Guice, y le permite vincular cualquier llamada REST a cualquier Método Java (con el objeto administrado por Guice). Muy flexible y simple.

http://britesnow.com/snow

yo soy el creador de este marco micro, por lo que, me gustaría recibir sus comentarios.

Cuestiones relacionadas