Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
1
Obiettivi
• Non è un framework
• Non è una tecnologia
• Non è una specifica
• Statelessness
• Non c’è stato conversazionale del client sul server
• Ciascuna richiesta dal client
• deve contenere tutte le informazioni necessarie all’elaborazione
• non deve fondarsi su uno stato conversazionale pre-esistente
• non deve fondarsi sulla sequenza di richieste precedenti
• curl -v http://acme.com/foo/bar
• curl -v -X POST -H"Accept: application/json” -d “…
json…” http://acme.com/foo/bar
• curl -v -X PUT http://acme.com/foo/bar2
• Preparazione
• Scaricare da https://bitbucket.org/tidalwave/bluemarine2-src
• %% mvn -DskipTests
cd modules/REST
% mvn -Prun-service
• URL da provare con GET
• http://...:9999/rest/record
• http://...:9999/rest/record/
urn:bluemarine:record:eLWktOMBbcOWysVn6AW6kk
sBS7Q=
• http://...:9999/rest/track
REST in JEE - Concetti Fondamentali v1.4 21
Interludio: Jersey Example
• Preparazione
• %% mvn -DskipTests
cd JerseyExampleServer
% mvn tomcat7:run
• Definire headers
• user: marco.rossi@email.it
• password: marco
• Accept: application/json
• Eseguire POST su http://localhost:8080/rest/user/login
• Prendere nota del token
• Ricordiamo
stati
l’analogia tra REST, web e macchine a
• Web Semantico
• Troppo complesso per la maggior parte dei casi
• Usare definizioni semplici, specifiche, documentate
• p.es. RDFa Lite in HTML 5 definisce uso di attributi
• rel, src, href
• aggiunge attributi
• property, content, datatype, typeof
REST in JEE - Concetti Fondamentali v1.4 37
Progettazione di applicazioni REST
• Il token è un header
• Authorization: Bearer 1/fFAGRNJru1FQd44AzqT3Zg
OAuth 2.0 v1.0 42
REST in JEE6+
• Basato sulla JAX-RS API
• Classi annotate implementano le risorse mappate su URL
• @ApplicationPath globale
• @Path per ogni risorsa root
• Metodi annotati rispondono ai verbi
• @GET, @POST, @PUT, @DELETE
• Annotazioni per i MIME type
• @Consumes, @Produces
• Annotazioni per i parametri
• @PathParam usata con @Path(“/product/{id}”)
• @QueryParam usata con parametri nel metodo
• @CookieParam per i cookie
• @FormParam per le form
REST in JEE - Concetti Fondamentali v1.4 43
Creazione della risposta
• Response.ok(entity, mimeType).build();
• Response.status(403).build();
• Response.accepted(entity).build();
• Response.notModified().build();
• Response.temporaryRedirect(url).build();
• ecc...
• Usare appropriatamente gli stati HTTP
REST in JEE - Concetti Fondamentali v1.4 44
WADL
• Domande e risposte