2012-02-29 6 views
22

Ho bisogno di creare il lato server di un'API JSON-REST, e ho giocato con Jersey per farlo (usando la sua funzione di mappatura JSON-POJO).Un'alternativa migliore a Jersey/Jackson per la creazione di API JSON REST?

Il problema è che anche testare il caso d'uso più semplice possibile ha richiesto diverse domande qui su SO, e un bel po 'di caccia in giro. In breve, non è un'API molto fluida nello stile di, per esempio, JSoup, sembra essere uno strumento che viene dall'era in cui tutto era XML, e quindi è stato adattato per JSON.

È possibile vedere questo, ad esempio, nel requisito che gli oggetti POJO devono essere annotati con @XmlRootElement anche se nulla di ciò che sto facendo riguarda XML.

Mi chiedo se ci sono altre librerie, forse più recenti, che dovrei considerare per questo che potrebbe essere più facile da usare rispetto a Jersey?

+10

SÌ! SÌ! PER L'AMORE DI DIO SI! Ho fatto questo stesso tipo di domanda più e più volte e continuo a ottenere poco o niente indietro. Ho persino rinunciato a una taglia 300pt e ancora nulla: [qui] (http://stackoverflow.com/questions/6986365/java-rest-client-jax-rs-automatic-type-mapping). [E questo è stato divertente.] (Http://stackoverflow.com/questions/6312030/cxf-no-message-body-writer-found-for-class-automatically-mapping-non-simple-r). Non so perché non abbiamo ancora i servizi web su java. – javamonkey79

risposta

3

per la conversione di json in pojos: gson e jackson. Per Restful userei spring o restlet.

+0

Sì, ho molta familiarità con Gson, e Jersey usa già Jackson, ma convertire JSON in e da POJO è solo una parte del problema, sto cercando un'alternativa a Jersey, che è un framework per costruire REST- API HTTP. Se ne esistesse uno preferirei un framework HTTP che funzionasse con Gson invece di Jersey, dato che mi sento più a mio agio con esso. – sanity

+1

@sanity oh, spring then – NimChimpsky

4

Consiglio vivamente JBoss RESTEasy per l'API REST. L'ho usato su un paio di progetti e ho trovato che fosse banale da configurare. Si integra bene anche con Spring se ne hai bisogno.

Ho usato sia Jackson che Gson per il supporto JSON con RESTEasy ed è piuttosto semplice. Tutto ciò che fai è annotare un POJO con annotazioni JAXB e includere le librerie appropriate.

Un'altra parte davvero notevole di RESTEasy è il buon supporto per i dati dei moduli multipart. Forniscono un'annotazione @MultipartForm che consente di associare un modulo multipart a un POJO senza scrivere alcun codice ... funziona sdolcinato.

Vorrei sconsigliare Spring MVC per REST perché non è compatibile con JAX-RS. L'utilizzo di un'interfaccia compatibile con JAX-RS offre una maggiore portabilità se si decide di passare a un'implementazione diversa in futuro.

+0

Hmm, non ne sono sicuro, sembra che si aspetti di essere distribuito in un file di guerra, e preferirei evitare un contenitore di servlet heavyweight e tutta quell'infrastruttura, l'API è solo un piccolo parte del mio progetto, non voglio riempire l'intera cosa in una guerra solo per poter supportare l'API: -/ – sanity

+0

Esegui su Jetty ... sarà leggero! –

0

Come NimChimpsky mentioned Restlet farà questo, fuori dalla scatola. Inoltre, se il tuo client è anche java puoi astrarre la funzionalità in un'interfaccia e avvolgerla facilmente con un proxy lato client. Questa pagina di tutorial mostra come fare ciò che ho menzionato here.

9

Jersey può serializzare POJO su JSON senza alcuna annotazione utilizzando Jackson. Si configura ciò impostando la proprietà JSONConfiguration.FEATURE_POJO_MAPPING su true.

In web.xml, aggiungere il seguente parametro 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

Si noti che la documentazione di Jersey2 che utilizza Jackson è imo scarsa/scarsa/datata. Dai un'occhiata a questa domanda e rispondi a http://stackoverflow.com/questions/17511268/cant-enable-pojo-based-json-binding-support-for-jackson-in-jersey-2-0. –

1

Questa è una risposta pregiudizi, ma abbiamo usato della neve per tutta la nostra impresa & applicazione sociale ed è estremamente leggero , completamente basato su Guice, e consente di associare qualsiasi chiamata REST a qualsiasi metodo Java (con l'oggetto gestito da Guice). Molto flessibile e semplice.

http://britesnow.com/snow

Io sono il creatore di questo Micro Framework, così, mi piacerebbe ricevere i tuoi commenti.