Pubblicato il Lascia un commento

REST (REpresentational State Transfer)

REST è un insieme di linee guida per la realizzazione di un’architettura di sistema, alternativo a SOAP, che permette di definire interoperabilità fra web-services appartenenti a piattaforme differenti tra loro.
I 5 principi fondamentali REST sono:

  1. Identificazione delle risorse
  2. Utilizzo esplicito dei metodi HTTP (GET, POST, PUT, DELETE) == operazioni CRUD
  3. Risorse autodescrittive, del tipo di rappresentazione, tramite MIME type della risposta
  4. Collegamenti tra risorse, HATEOAS
  5. Comunicazione senza stato

 

Ricordarsi che una URI identifica una risorsa, perciò evitare di utilizzare verbi ma nomi.

Fare attenzione a non utilizzare i metodi HTTP (PUT e POST) per fare ad esempio una chiamata di risorsa, che secondo REST spetta a GET.
Ciò significa per esempio che se faccio il submit di un form per filtrare delle risorse, l’intestazione del metodo HTTP dovrà comunque essere GET e non POST.

 

Esempi

Richiesta REST

Richiesta da parte del client della risorsa “cliente” con id 1234, in formato XML secondo lo schema definito da vnd.myapp.cliente.

Collegamenti tra risorse

 

 

Vantaggi

Evita chiamata accidentali di url tipo miosito.it/scrivineldb.php

Rappresentazioni multiple di una stessa risorsa.

 

 

Best Practices

  1. Nomi e non Verbi
  2. Nomi al plurale
  3. Alterare stati risorsa solo con PUT,POST,DELETE (non “tramite url”)
  4. Sub-Resources per descrivere le relazioni (es.ok: sito/books <-> sito/books/1)
  5. Usare gli Header HTTP (in particolare
    Content-Type : definisce il formato della request.
    Accept : definisce un elenco dei formati di risposta accettabili.)
  6. Usare HATEOAS
  7. Implementa operazioni di filtraggio, ordinamento, selezione di specifici campi e paginazione per le collection
  8. Versiona la tua API
  9. Gestire errori usando codici stato HTTP
  10. Usaew payload errore
  11. Consentire override dei metodi HTTP

Fonte: http://losviluppatore.it/restful-api-10-best-practices/

FONTE

http://www.html.it/guide/restful-web-services-la-guida/

http://stackoverflow.com/questions/2001773/understanding-rest-verbs-error-codes-and-authentication

 

 

 

 

From slideshare

fonte: http://www.slideshare.net/AndrewRiot/lezione12-autenticazione-e-gestione-delle-sessioni-in-rest

Livelli in cui si può gestire l’autenticazione:

  1. nel protocollo di trasporto (SSL/TLS) – certificato x verificare identità server, necessita HTTPS; ?KeyStore & TrustStore?;
  2. nel protocollo HTTP
    1. basic authentication – password in chiaro
    2. digest authentication – utilizzo “challenge”
  3. nell’applicazione

Processo autenticazione:

  • client richiede risorsa;
  • se risorsa necessita di autenticazione il server risponde con [401 + “challenge”]
  • client risponde con [username + combinazione (“challenge”+ password)]

[slide9] da qui in poi parla in JAVA … In Java l’autenticazione HTTP è gestita in automatico da HttpURLConnection […]

[slide13] Una RESTfull dovrebbe esere stateless perciò non si dovrebbe usare le sessioni in quanto queste sono collegate fra loro

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.