Il framework Java Jersey consente di sviluppare servizi RESTful in Java. Fornisce il supporto alla JAX-RS API e offre un'implementazione della specifica JAX-RS. Supportando una varietà di formati, consente allo sviluppatore di astrarre dai dettagli di basso livello necessari alla comunicazione client-server.
Architettura Web
L'architettura del Web è cambiata, con l'introduzione di framework Javascript per la realizzazione di applicazioni di front-end come AngularJS o React diventa sempre più forte la necessità di realizzare componenti di back-end orientati ai servizi. La dinamicità viene completamente delegata al codice Javascript residente sul client, piuttosto che alle elaborazioni server-side. In AJAX, infatti, le richieste vengono inviate al server e la risposta viene utilizzata per modificare dinamicamente la pagina corrente. La risposta è spesso in formato JSON.
D'altronde in rete, sono sempre più comuni casi, in cui, viene offerta, oltre alla classica interfaccia Web, un interfaccia a servizi, per consentire a terzi lo sviluppo di interfacce grafiche in modo autonomo. In genere si parla di servizi REST.
Il nostro progetto
In questa guida vedremo come realizzare servizi REST JSON in Java ed eventualmente come interrogarli, sfruttando il framework Jersey. Utilizzeremo Maven per la gestione delle dipendenze e la compilazione e Jetty come Servlet Engine, come plugin di Maven per deployare rapidamente la nostra applicazione Webì. Per dei rapidi test ci avvarremo di curl, un tool da console per l'invio di richieste HTTP.
Dapprima andremo a vedere come strutturare il progetto Java con i tool appena descritti. Quindi procederemo con l'implementazione dei servizi di un progetto di prova. Vedremo come sia semplice realizzare con poche righe di codice dei servizi in modo da gestire i dati in ingresso ed uscita semplicemente tramite delle classi Bean in Java. Studieremo inoltre come gestire con le annotation le regole su come effettuare il parsing degli oggetti e come intercettare il flusso di request/response delle chiamate per gestire le comunicazioni.
Infine proveremo a realizzare un'applicazione Client di esempio per comunicare con dei servizi REST sfruttando le potenzialità messe a disposizione dal framework. Al termine del tutorial analizzeremo alcune altre features del framework utili per successive implementazioni.
REST, i fondamentali
Prima di addentraci nel vivo del progetto diamo solo qualche cenno di base relativo ai servizi REST. Per REST di intende un approccio che definisce un insieme di linee guida, fra cui:
- identificazione delle funzionalità in risorse Web univoche a livelli;
- utilizzo esplicito dei metodi HTTP;
- protocollo client-server stateless.
Ipotizziamo lo scenario che gestisce una biblioteca ed andiamo ad individuare gli endpoint sfruttando tale approccio. Per gestire i libri sfrutteremo la risorsa book.
Risorsa | Metodo |
---|---|
Lista libri | [GET] /books . |
Dettaglio libro | [GET] /books/<id> . |
Creazione libro | [POST] /books POST . |
Modifica libro (o creazione libro con uno specifico ID) | [PUT] /books/<id> . |
Cancellazione libro | [DELETE] /books/<id> . |
Introduciamo ora una risorsa collegata, ad esempio gli autori, quindi la risorsa authors.
Risorsa | Metodo |
---|---|
Lista autori di un libro | [GET] /books/<id>/authors . |
Nel prossimo capitolo vedremo come creare il progetto Java e come impostare le configurazioni di base.