I Web Service RESTful

Note dalla lettura di Beginning Java EE 6 Platform with GlassFish 3 di Antonio Goncalves. Capitolo 15 - I Web Service RESTful

REST sta per Representational State Transfer e indica uno stile architetturale basato su come funziona il web. Per supportare questo stile nello sviluppo di web service, Java mette a disposizione JAX-RS (Java API for RESTful Web Services).

In REST ogni informazione é una risorsa, e di fa a riferimento a queste risorse usando URI (Uniform Resource Identifier), tipicamente link nel web.

HTTP

Lo stile architetturale REST client-server é progettato per usare un protocollo di comunicazione stateless, tipicamente HTTP.

Il client manda un richiesta al server, aspettandosi una risposta. La risposta é costituita da un codice (p.es.: 200 OK); un certo numero di header, tra cui il content-type che tipicamente é txt/html, ma può anche essere application/xml o image/jpeg; e la rappresentazione.

I principale metodi HTTP sono:
  • GET: per leggere una rappresentazione della risorsa. Dovrebbe essere implementato in modo sicuro, ovvero non dovrebbe cambiare lo stato della risorsa, e idempotente, ovvero chiamare più volte get per la stessa risorsa dovrebbe lasciare la risorsa nello stesso stato.
  • POST: crea una nuova risorsa come subordinata ad una risorsa principale identificata dalla URI richiesta. Di conseguenza non é sicura, dato che la risorsa é aggiornata, né idempotente.
  • PUT: aggiorna lo stato di una risorsa memorizzata ad un dato URI. Non é sicura ma é idempotente.
  • DELETE: richiede l'eleminazione della risorsa. É quindi idempotente ma non sicura.
Altre azioni HTTP sono:
  • HEAD: simile a GET, ma non ritorna il corpo del messaggio.
  • TRACE: ritorna una eco della richiesta ricevuta.
  • OPTIONS: é una richiesta di informazioni sulle opzioni di comunicazione disponibili.
  • CONNECT: usata in congiunzione con un proxy per usare il protocollo HTTP come wrapper per altri protocolli di rete per gestire il tunnelling.
Tipi di contenuto

I principali tipi di media internet, quelli che erano orginalmente chiamati tipi MIME) utilizzati sono
  • text/html
  • text/plain: testo semplice, é il default.
  • image/gif, image/jpeg, image/png
  • text/xml, application/xml
  • application/json: JSON, che sta per JavaScript Object Notation, é un formato di testo usato per lo scambio di dati per linguaggi di programmazione.
Codici di stato
  • 1xx: informazionale
  • 2xx: successo; ad es. 200 OK
  • 3xx: ridirezione; ad es. 301 Moved Permanently
  • 4xx: errore lato client; ad es. 404 Not Found
  • 5xx: errore lato server; ad es. 500 Internal Server Error
L'implementazione di riferimento di JAX-RS é Jersey.

Nessun commento:

Posta un commento