Sviluppo di servizi RESTful con il materiale didattico REST/JAX-RS
Questo corso fornisce una copertura approfondita dei principi REST e della creazione di servizi RESTful utilizzando l'API JAX-RS 2.0. Include una breve panoramica dei servizi basati su SOAP e WSDL per fornire un contrasto con i servizi RESTful.
Per comprendere veramente REST, dobbiamo ricordare (insegnare) agli studenti le funzionalità complete di HTTP, poiché la progettazione del servizio RESTful è incentrata sui principi e sulle capacità innati del protocollo HTTP. In altre parole, i servizi RESTful dovrebbero utilizzare HTTP nel modo in cui erano stati originariamente concepiti, non solo come sistema idraulico GET/POST per i dati di richiesta/risposta. Uscirai dal corso con una comprensione completa del protocollo HTTP e della sua visione del «web originale» e di come queste idee vengono implementate nelle applicazioni RESTful.
Ti mostreremo come gestire i tipi più comuni di input delle richieste, che culminano nella trasmissione di entità HTTP in formato XML e JSON, in linea con l'intenzione originale di HTTP. Imparerai anche come creare risposte appropriate in base a una varietà di input e condizioni, secondo le linee guida e i principi dello standard HTTP.
Sul lato client, esaminiamo i client AJAX-JavaScript e i client Java autonomi che utilizzano l'API client JAX-RS 2.0.
Il tuo uso personale quotidiano del Web è sempre più RESTful e questo corso ti mostrerà come esporre i tuoi sistemi aziendali di backend utilizzando REST e l'API e le funzionalità innate di HTTP. Prendiamo spunto anche da maestri come Google, esaminando alcuni dei loro servizi pubblici e utilizzandoli come sfondo per costruire i nostri.
Il corso è molto pratico con frequenti laboratori, in cui lo studente può vedere queste idee implementate nel software.
Tutti i laboratori vengono eseguiti con la versione Eclipse IDE Java EE e il WildFly Application Server e le istruzioni di laboratorio includono istruzioni dettagliate per il loro utilizzo. Altri IDE e server disponibili su richiesta.
Vantaggi
- Comprendi lo scopo e il ruolo dei servizi Web in generale e come sono progettati per esporre sistemi e processi aziendali sul Web
- Comprendi i concetti e i principi delle applicazioni REST e HTTP
- Conoscenza approfondita di HTTP, incluso il set completo di metodi e gli usi previsti, le intestazioni importanti, i codici di risposta e i tipi di contenuto
- Comprendi le API REST, inclusi gli identificatori delle risorse e lo spazio dei nomi URI, le risorse e le sottorisorse e WADL
- Comprendi la configurazione, la distribuzione e l'ambiente di runtime, inclusi oggetti per richiesta e singleton, opzioni per l'inserimento delle dipendenze, ecc.
- Scopri come le richieste HTTP vengono inviate ai metodi di servizio
- Comprendi la negoziazione dei contenuti e l'importanza degli header Accept e Content-Type e il loro impatto sul metodo di dispacciamento
- Associa gli input della richiesta ai parametri del metodo, inclusi i parametri di percorso, i parametri di query e le intestazioni
- Scambia dati aziendali comunicando in entità HTTP in formato XML e JSON
- Gestire gli errori utilizzando le eccezioni Java e i codici di risposta HTTP appropriati
- Scopri come integrare i servizi JAX-RS con altre tecnologie Java EE come servlet, EJB e CDI e come JAX-RS si inserisce nel più ampio panorama Java EE
- Scrivere client del browser utilizzando AJAX-JavaScript
- Scrivi client Java utilizzando l'API client JAX-RS 2.0, inclusi client autonomi e componenti lato server che richiamano servizi remoti
- Scopri come proteggere le risorse RESTful
Programma
- Panoramica dei servizi Web
- Definizione
- Sistemi legacy
- Vantaggi dei servizi Web
- Architettura
- Standard e portabilità
- XML e standard correlati
- JSON
- HTTP
- Servizi basati su SOAP
- Panoramica
- Messaggi, richieste e risposte SOAP
- WSDL
- API Java e modelli di programmazione
- Introduzione a REST
- Panoramica e principi
- Caratteristiche REST
- Risorse e operazioni
- Principi REST
- Richieste e risposte
- API REST
- Modelli URI
- OTTIENI, PUBBLICA, METTI, ELIMINA
- Metodi sicuri e idempotenti
- Confronto tra REST e SOAP
- Introduzione a JAX-RS
- API e implementazioni
- Panoramica JAX-RS, annotazioni
- Implementazioni JAX-RS
- Ambiente di runtime
- Application Server, contenitore solo servlet
- Prospettive architettoniche e di implementazione
- Configurazione dell'applicazione
- Applicazioni, risorse e fornitori
- Applicazioni JAX-RS
- Classi di risorse e @Path
- Provider Classes e @Provider
- Cicli di vita predefiniti
- La classe dell'applicazione e il percorso di ripristino
- Client AJAX-JavaScript
- Panoramica
- Interazioni classiche e Ajax
- Lavorare con AJAX-JavaScript
- Risorse e richieste
- Risorse e sottorisorse
- Classi di risorse radice, metodi di risorsa, metodi di sottorisorsa
- @GET, @POST, @PUT, @DELETE
- Localizzatori di risorse secondarie
- Convenzioni e regole di denominazione
- Invio delle richieste ai metodi
- Dati vincolanti della richiesta
- Richiedi l'iniezione e la conversione dei dati
- Valori predefiniti
- Campi e parametri del metodo
- Iniezione basata sul contesto
- Iniezione tramite @Context
- Tipi iniettabili contestualmente
- Iniezione di contesto dal contenitore Web
- Campi e parametri del metodo
- Entità HTTP
- Contenuti ed entità complessi
- Lavorare con contenuti complessi
- @Consumes e @Produces
- Negoziazione dei contenuti
- Fornitori di entità standard
- Lavorare con JSON
- Restituzione dei dati come JSON
- Lavorare con JSON in JavaScript
- Elaborazione delle risposte JSON
- Lavorare con XML
- JAXB e mappatura su XML
- Restituzione dei dati come XML
- Lavorare con XML sul client
- Personalizzazione dei contenuti, tipi di file multimediali personalizzati
- Lavorare con le raccolte
- XML e JSON
- Risposte
- Classe di risposta
- Tipi di ritorno e codici di risposta HTTP
- Risposte appropriate per i metodi HTTP
- Scelta della risposta giusta
- Gestione degli errori
- Mappatori delle eccezioni
- Eccezione dell'applicazione Web
- Risposta vs. eccezione generata
- Risposte agli errori
- Localizzatori di risorse secondarie
- Motivazione e usi
- Individuazione del localizzatore
- Inizializzazione della sottorisorsa
- Contenuto binario
- File, flusso di ingresso, uscita in streaming
- Utilizzo di StreamingOutput
- API client Java
- Java Client - Opzioni e ingredienti
- Creazione e invio della richiesta
- Consumo della risposta
- Opzioni per i dati di risposta
- Richieste asincrone
- Integrazione con Java EE
- Integrazione con EJB
- CDI - Contesti e iniezione di dipendenze
- Attivazione, ambiti e cicli di vita JAX-RS
- Iniezione in applicazioni JAX-RS compatibili con CDI
- Ciclo di vita Java EE migliorato
- Sicurezza
- Panoramica sulla sicurezza di Java EE
- Requisiti di sicurezza in JAX-RS
- Sicurezza dichiarativa basata sui ruoli
- Vincoli di sicurezza
- Sicurezza basata sulle annotazioni
- Autenticazione
- Configurazione
- Modelli di autenticazione: Basic, Digest, Client-Cert
- Sicurezza programmatica
- Contesto di sicurezza
- Sicurezza del cliente
- HTTPS
Prerequisiti richiesti
I partecipanti devono avere esperienza in Java e idealmente avere una certa familiarità con XML, applicazioni web Java e altri standard Java EE.
Prerequisiti utili
Familiarità con Ajax, JavaScript e JSON.