2014-11-09 9 views
10

Voglio creare un servizio/API riposante. Ho usato qualche framework come il gioco per costruirlo ma voglio provare altri modi più efficienti. Ho sentito che Jersey è una libreria comune per la costruzione dell'API resto, e Spring è anche un buon quadro. Ma ho anche visto alcune soluzioni come Spring + Jersey. Quindi, sono un po 'confuso su quelle soluzioni di resto dell'API.Qual è la differenza tra il servizio Spring Rest e le soluzioni Jersey Rest Service e Spring + Jersey?

Qualcuno può dirmi qual è la differenza tra quelli? Jersey REST, Spring Rest e Spring + Jersey Rest?

Il mio obiettivo è la costruzione di un paio di API REST che prendono JSON come input/output. Ho il file jar come logica del processo di backend per elaborare l'input json/object e restituire json/object.

grazie mille.

risposta

14

Jersey è l'implementazione esempio API JAX-RS è fornito da Sun, mentre Spring REST è di realizzazione del corso della primavera dello stesso API JSR /. La principale differenza è che Spring REST si integra facilmente in altre API Spring (se lo desideri) come Spring Data Rest.

Ci sono alcune differenze degne di nota tra di loro - si può "embed" Jersey Risorse (conosciuto in primavera come Controller) all'interno di ogni altro, per consentire una classe separata che è responsabile per il sub-percorso di un certo percorso, mentre questo non sembra essere disponibile in primavera in questo momento (devi definire il percorso completo). Inoltre, secondo me, Jersey offre risposte di errore "out of the box" migliori (come il motivo per cui non può mappare un carico utile JSON su un bean Java usando Jackson) mentre Spring è un po 'più configurabile ma più semplice senza un lavoro aggiuntivo.

Alla fine la differenza nella scelta tra di loro di solito si riduce a - sono già o avete intenzione di integrare altre librerie di primavera nella vostra applicazione? Se è così, Spring REST è la strada da percorrere perché avrai un tempo molto più semplice per integrarlo, altrimenti è solo una preferenza personale che preferiresti usare. Personalmente mi piace Jersey ma la potenza di altri progetti Spring correlati (come lo Spring HATEOAS che consiglio vivamente) rende Spring la scelta migliore. Non penso che ci sarà un fattore determinante nel tuo caso.

Poiché il tuo target "oro" è una semplice API con input/output JSON, ti consigliamo di seguire lo Spring REST guide.

+0

anche Primavera + Jersey REST di solito si riferisce all'utilizzo di Jersey per gli endpoint RESTful con molla per il resto dell'applicazione - quando si desidera utilizzare le annotazioni Jersey/implementazione, ma altri framework Spring, come l'iniezione di dipendenza. –

+0

Grazie, ho già installato l'API REST. – Terry

2

Una grande differenza è nell'area di supporto per il collaudo dell'unità.

Jersey Test Framework non si presta per il codice lato server di simulazione - Ad esempio, se la risorsa REST dipende da un servizio, si desidera simulare il servizio durante il test dei metodi di risorse. Tuttavia, i test di Jersey eseguono un contenitore separato e le unit test effettuano una sorta di chiamate all'istanza in esecuzione della risorsa REST: in questo momento non ho trovato alcuna documentazione o metodo per il codice lato server di simulazione.

Al contrario, Spring MVC tests non richiedono alcun contenitore - e sono più ben integrati con i suoi controllori. L'iniezione di dipendenza può essere utilizzata per iniettare servizi di simulazione/DAO per avere migliori test unitari.

Trovo anche che la documentazione sui progetti di primavera sono più maturo rispetto a Jersey.