web-dev-qa-db-fra.com

Une meilleure alternative à Jersey/Jackson pour la construction de JSON REST Apis?

Je dois créer le côté serveur d'une API JSON-REST et je joue avec Jersey pour le faire (en utilisant sa fonctionnalité de mappage JSON-POJO). 

Le problème est que même tester le cas d'utilisation le plus simple possible a nécessité plusieurs questions ici sur SO, et une bonne partie de la recherche. En bref, ce n'est pas une API très fluide dans le style de, disons, JSoup, il semble être un outil qui vient de l'époque où tout était XML, puis qui a été mis à jour pour JSON. 

Vous pouvez le voir, par exemple, dans l'exigence selon laquelle les objets POJO doivent être annotés avec @XmlRootElement, même si rien de ce que je fais ne concerne XML.

Je me demande s’il existe d’autres bibliothèques, peut-être plus récentes, que je devrais envisager pour cela et qui pourraient être plus faciles à utiliser que Jersey.

22
sanity

Jersey peut sérialiser les POJO en JSON sans annotation à l'aide de Jackson. Vous configurez cela en définissant la propriété JSONConfiguration.FEATURE_POJO_MAPPING sur true.

Dans web.xml, ajoutez le paramètre init du servlet suivant:

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

Voir la documentation Jersey

9
hakonlo

Je recommande fortement JBoss RESTEasy pour l'API REST. Je l'ai utilisé sur quelques projets et j'ai trouvé qu'il était simple à installer. Il s'intègre également très bien avec Spring si vous en avez besoin.

J'ai utilisé Jackson et Gson pour le support JSON avec RESTEasy et c'est assez simple. Tout ce que vous faites est d'annoter un POJO avec des annotations JAXB et d'inclure les bibliothèques appropriées.

Un autre élément vraiment intéressant de RESTEasy est la prise en charge efficace des données de formulaire en plusieurs parties. Ils fournissent une annotation @MultipartForm qui vous permet de lier un formulaire multipart à un POJO sans écrire de code ... fonctionne parfaitement.

Je déconseillerais Spring MVC pour REST car ce n'est pas compatible JAX-RS. L'utilisation d'une interface compatible JAX-RS améliore légèrement la portabilité si vous décidez de passer ultérieurement à une autre implémentation.

4
Matt Accola

pour convertir json en pojos: gson et jackson . Pour Restful je voudrais utiliser spring ou restlet

3
NimChimpsky

Note: Je suis le EclipseLink JAXB (MOXy) lead, membre du groupe JAXB (JSR-222) et contributeur au Jersey projet.

Avec Jersey ou tout projet JAX-RS, vous pouvez utiliser une MessageBodyReader/MessageBodyWriter pour un contrôle complet de votre liaison JSON. Vous trouverez ci-dessous un exemple d'utilisation de ce mécanisme pour exploiter MOXy en tant que fournisseur JSON.

2
Blaise Doughan

C’est une réponse biaisée, mais nous utilisons Snow pour toutes nos applications sociales et d’entreprise. Elle est extrêmement légère, entièrement basée sur Guice et vous permet de lier n’importe quel appel REST à n’importe quelle méthode Java (avec l’objet géré par Guice). Très flexible et simple. 

http://britesnow.com/snow

Je suis le créateur de ce micro-cadre, j'aimerais donc avoir votre avis. 

1
Jeremy Chone

Comme NimChimpsky a mentionné , Restlet le fera immédiatement. En outre, si votre client est également Java, vous pouvez intégrer la fonctionnalité dans une interface et l’envelopper avec un proxy côté client assez facilement. Cette page de tutoriel montre comment faire ce que j'ai mentionné here

0
javamonkey79

Vous pouvez essayer JEST , cela fonctionne sur OpenJPA .

0
thSoft