Java >> Programma Java >  >> Tag >> Spring

7 motivi per utilizzare Spring per sviluppare servizi Web RESTful in Java

REST è ora diventato un modo standard per sviluppare servizi Web e quando si tratta di Java, ci sono molti framework e librerie disponibili, ad es. JAX-RS, Restlet, Jersey, RESTEasy, Apache CFX ecc., ma incoraggio gli sviluppatori Java a utilizzare il framework Spring per sviluppare servizi web RESTful. Ma alcuni di voi potrebbero chiedersi: perché utilizzare Spring Framework per sviluppare servizi Web RESTful in Java? Qual è il vantaggio e perché è migliore di altri framework e librerie disponibili? Bene, il motivo più importante per cui penso di utilizzare Spring per lo sviluppo di servizi web RESTful è che puoi utilizzare la tua esperienza Spring MVC per sviluppare servizi web RESTful.

Questo è uno dei maggiori vantaggi, ovvero sfruttare i tuoi anni di esperienza su Spring MVC per esporre la tua applicazione come API REST. Un altro motivo è che Spring offre un eccellente supporto per lo sviluppo di servizi Web RESTful .

Nelle ultime un paio di versioni, a partire dalla versione Spring 3.0, ha fornito molti miglioramenti a Spring MVC per fornire un supporto REST di prima classe. Ha fornito annotazioni dedicate, ad es. @RestController e @ResponseStatus per rendere ancora più semplice lo sviluppo di risorse RESTful nella primavera 4.0.

Non solo ti aiuta a creare servizi web RESTful, ma fornisce anche lezioni per consumare risorse REST, ad es. puoi usare RestTemplate classe per consumare risorse RESTful.

Ci sono molte altre classi di utilità e annotazioni che rendono lo sviluppo di servizi Web RESTful in primavera più semplice e senza interruzioni e ne condividerò un paio in questo articolo per dimostrare il mio punto che l'utilizzo di Spring per sviluppare il servizio Web RESTful è la decisione giusta.

In che modo Spring supporta i servizi Web RESTful?

Come ti ho detto nel primo paragrafo, possiamo utilizzare Spring MVC per creare e utilizzare servizi web RESTful. Ora, vediamo questi supporti un po' più in dettaglio in modo che tu possa sfruttarli al meglio e sviluppare rapidamente i servizi RESTful che hai sempre desiderato.

1. In Spring MVC, un controller può gestire le richieste per tutti i metodi HTTP, che è una spina dorsale dei servizi Web RESTful. Ad esempio, puoi gestire il metodo GET per eseguire operazioni di lettura, il metodo POST per creare risorse, il metodo PUT per aggiornare le risorse e il metodo DELETE per rimuovere risorse dal server. Dalla primavera 3.2 in poi, puoi anche gestire le richieste PATCH.
2. In caso di REST, la rappresentazione dei dati è molto importante ed è per questo che Spring MVC consente di bypassare del tutto il rendering basato su View utilizzando il @ResponseBody annotazione e varie implementazioni di HttpMessgeConverter.

Usando questi due puoi inviare direttamente una risposta al cliente, ad es. la risorsa che i clienti desiderano e anche nel formato che desiderano. Scriverò di più su @ResponseBody annotazioni e HttpMessageConverter in questo blog nei prossimi articoli.

3. La versione Spring 4.0 ha aggiunto un'annotazione dedicata @RestController per rendere ancora più semplice lo sviluppo di servizi web RESTful.

Se annoti la tua classe controller usando @RestController invece di @Controller quindi Spring ha applicato le conversazioni di messaggi a tutti i metodi del gestore nel controller.

Ciò significa che non è necessario annotare ogni metodo con il @ResponseBody annotazione. Questo rende anche il tuo codice molto più pulito. Puoi leggere di più a riguardo nella mia differenza di post tra @Conroller e @RestController in primavera.

4. Una delle principali differenze tra i servizi Web REST e una normale applicazione Web è che REST passa i dati dell'identificatore di risorsa nell'URI stesso, ad es. /messages/101 mentre l'applicazione Web normalmente utilizza un parametro di query, ad es. /messaggi?Id=101.

Se ricordi, utilizziamo @RequestParam per ottenere il valore di quei parametri di query ma non preoccuparti, Spring MVC fornisce anche un @PathVariable annotazione che può estrarre i dati dall'URL. Consente al controller di gestire le richieste di URL parametrizzati.

Puoi saperne di più su @PathVariable nel mio post differenza tra @RequestParam e @PathVaraible in primavera.

5. Un altro aspetto chiave dei servizi web RESTful è la rappresentazione, ad es. la stessa risorsa può essere rappresentata in formati diversi ad es. JSON, XML, HTML ecc. Per fortuna Spring fornisce diverse implementazioni di viste e risolutori di viste per eseguire il rendering dei dati come JSON, XML e HTML.

Ad esempio, ContentNegotiatingViewResolver può guardare l'estensione del file delle richieste o l'intestazione Accept per scoprire la corretta rappresentazione di una risorsa per il client.

6. Simile a @ResponseBody annotazione, che viene utilizzata per convertire la risposta nel formato desiderato dal client (utilizzando HttpMessageConverts ), Spring MVC fornisce anche @RequestBody annotation, che utilizza le implementazioni di HTtpMethodConverter per convertire i dati HTTP in entrata in oggetti Java passati al metodo del gestore di un controller.

7. Spring Framework fornisce anche una classe Template, RestTemplate , simile a JdbcTemplate e JmsTemplate , che può consumare risorse REST. Puoi utilizzare questa classe per testare il tuo servizio Web RESTful o sviluppare client REST.

Ho già parlato di questa classe nei miei post precedenti sul blog e puoi vedere questo tutorial per un esempio dal vivo dell'utilizzo di RestTemplate per utilizzare JSON da un servizio web RESTful in Java.

Queste erano alcune delle caratteristiche importanti del framework Spring MVC che aiutano nello sviluppo di servizi web RESTful. Come ho detto, il motivo più importante per me per scegliere Spring per lo sviluppo di risorse RESTful è che posso utilizzare la mia conoscenza esistente del framework, il che significa nessuna curva di apprendimento ripida. Se guardi da un livello elevato, lo sviluppo di servizi RESTful non è molto diverso dallo sviluppo di un'applicazione web.

La differenza fondamentale è che nel primo caso, ci occupiamo principalmente di utenti umani mentre in caso di REST, devi avere a che fare con utenti non umani, per lo più client JavaScript avanzati e applicazioni mobili. Questa differenza fondamentale deriva quindi da altre differenze, ad es. che rappresentano i dati in JSON o XML anziché in HTML, adatto per utenti umani ma non per sistemi non umani.
Altro Primavera e Risorse REST ti potrebbe piacere:

Differenza tra Restlet, Jersey e RESTEasy in Java?

A cosa serve DispatcherServlet in Spring MVC?

Come abilitare la sicurezza Spring in un'applicazione Web Java?

Grazie per aver letto questo articolo, se ti piacciono questi motivi per sviluppare servizi Web RESTful utilizzando Spring, condividi con i tuoi amici e colleghi. In caso di domande o feedback, inviare una nota.

Etichetta Java