RESTful APIs (ITA) - /w WebMachine

  • 1,073 views
Uploaded on

Presentazione che ho tenuto presso The Hub Bari allo StartupWeekEnd Bootcamp il 9 Settembre 2012

Presentazione che ho tenuto presso The Hub Bari allo StartupWeekEnd Bootcamp il 9 Settembre 2012

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • How are you today,
    i hope fine,my name is miss blessing, i saw your profile today at (www.slideshare.net) and i became interested in you i will also like to know more about you, and i will like you to send an email to me so that i can send my photos to you, remember that distance, color or language does not matter but love matters allot in life, am waiting for your reply in my E-mail ID at blessingandrew3@yahoo.com have a nice day yours blessing.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
1,073
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. RESTful APIs giancarlo valente - @gncvalente
  • 2. l’idea e’ semplice:usare il protocollo che fa’ “muovere” il webper realizzare l’architettura a servizi di un sistema complesso
  • 3. l’idea e’ semplice:usare il protocollo che fa’ “muovere” il webper realizzare l’architettura a servizi di un sistema complessoed ereditarne i vantaggi
  • 4. TANTE IMPLEMENTAZIONI DI ARCHITETTURE A SERVIZI DISTRIBUITIDCOMCORBAWS_*HTTP-RPC...
  • 5. WWW il web e un insieme di servizi (APIs), utilizzabili dagli uomini, attraverso un browser esempio: http://www.google.com/search?q=pugliaun insieme di regole prefissate consente di usufruire di n-milioni di servizi in modo trasparente
  • 6. il web e lAPI distribuita di maggior successo perche?
  • 7. HTTP DOCUMENT BASED PROTOCOL il client mette un documento in un envelope e lo spedisce al server il server risponde con unaltro documento in un enevlope lHTTP definisce in modo dettagliato come deve essere la busta,ma e completamente libero sul formato del documento contenuto
  • 8. METHOD INFORMATIONSCOPING INFORMATION cosa devo fare, e su cosa Per Classificare le varie tipologie di servizi
  • 9. METHOD INFORMATIONSCOPING INFORMATION cosa devo fare, e su cosa WS* - Method information ==> body Scoping information ==> body es. AddItem(cartId)
  • 10. METHOD INFORMATION SCOPING INFORMATION cosa devo fare, e su cosa WS* - Method information ==> body Scoping information ==> body es. AddItem(cartId) HTTP-Rpc protocls Method information ==> url Scoping information ==> body/carrello.php?op=AggiungiProdotto (body:CarrelloID ProdottoID)
  • 11. METHOD INFORMATION SCOPING INFORMATION REST Method information ==> HTTP verb Scoping information ==> URI *es. POST http://www.mioecommerce.it/carrello/34Abc9/prodotti body: { Prodotto: 5467, Quantita’: 2} *(unique resource identifier)
  • 12. DIFFERENZA in REST ragiono per nomi (invece che per verbi) i verbi sono fissi : GET, PUT, POST, DELETE ... dare un nome alle risorse e’ il mio lavoro Resource OrientedOperation Oriented /posts (GET, POST)- CreateBlogPost /post/{id} (GET, PUT, DELETE)- GetBlogPostByTag /tags/{a}/posts (GET)- GetBlogPostByAuthor /authors/{a}/posts (GET)
  • 13. ESEMPIOdevo aggiungere un prodotto al carrello POST /cart/{cartId} Body: prodotto devo creare una nuova sessione POST /sessionsdevo associare uno studente a una classePUT /classes/Math101/students/Giancarlo
  • 14. RESOURCE ORIENTED ARCHITECTURESROA is a way of turning a problem into a RESTful web service: an arrangement of URIs, HTTP verbs, xml, json, html ...
  • 15. PRINCIPI: ADRESSABILITY URI (adressability principle) naming things as resources every resouce is identified by a unique identifier
  • 16. PRINCIPI: REPRESENTATION Rappresentazioni (representation oriented) la comunicazione avviene tramite rappresentazioni
  • 17. PRINCIPI: UNIFORMINTERFACEHTTP method (uniform interface principle) GET SAFE IDEMPOTENT PUT NOT SAFE IDEMPOTENT POST NOT SAFE NOT IDEMPOTENT DELETE NOT SAFE IDEMPOTENT
  • 18. PRINCIPI: STATELESS Stateless (stateless communication)
  • 19. FRAMEWORKS PER REALIZZARE UN REST SERVICE? Ruby ---> webmachine, sinatra node.js ---> connect C# --> nancy
  • 20. WEBMACHINEErlang toolkit ... build full featured HTTP services progetto finale, mini blog engine, completamente restful
  • 21. RESTFUL BLOG/posts GET, POST html, json json
  • 22. RESTFUL BLOG/posts GET, POST html, json json/post/{permalink} GET, PUT, DELETE html, json json
  • 23. RESTFUL BLOG/posts GET, POST html, json json/post/{permalink} GET, PUT, DELETE html, json json/tags GET html, json
  • 24. RESTFUL BLOG/posts GET, POST html, json json/post/{permalink} GET, PUT, DELETE html, json json/tags GET html, json/tags/{tag}/posts GET html, json
  • 25. RESTFUL BLOG/posts GET, POST html, json json/post/{permalink} GET, PUT, DELETE html, json json/tags GET html, json/tags/{tag}/posts GET html, json/authors GET html, json
  • 26. faccio vedere subito il RESTFUL BLOG risualtato finale dalle risorse piu’ semplici al blog e etag il codice erlang ... parto dal JS della pagina statica/posts GET, POST html, json json e vado poi di risorsa in risorsa seguendo le slide/post/{permalink} GET, PUT, DELETE html, json json seguenti/tags GET html, json/tags/{tag}/posts GET html, json/authors GET html, json/authors/{author}/posts GET html, json
  • 27. demo: simple resource git checkout “tag” v1 fa’ output di un testoHTTP E’ SOLO TESTO
  • 28. CODICE demo: rappresentazioni json e html demo: /posts cambio titolo del postdemo: e comunico un permanent /post/x redirect/posts POST, GET demo col browsercon client HTTP git checkout v4 git checkout v5git checkout v3
  • 29. RISORSA SEMPLICEinvia in output la configurazione di input
  • 30. RISORSA CON TEMPLATE home page del blog, da template.
  • 31. RAPPRESENTAZONIrisorsa con rappresentazioni in JSON e HTML
  • 32. ACCEPT: JSONrisorsa che accetta in ingresso JSON
  • 33. MATURITY LEVEL 3le risorse includono dei link, per indirizzare il client, verso la URI della risorsa stessa, o verso sottorisorse demo: altre risorse, e links git checkout v6
  • 34. MATURITY LEVEL 3le risorse includono dei link, per indirizzare il client, verso la URI della risorsa stessa, o verso sottorisorse demo: altre risorse, e links git checkout v6
  • 35. demo demo col browser git checkout v7GET CONDIZIONALE etag it is not caching, it is much more!
  • 36. GET CONDIZIONALE etag with webmachine
  • 37. MOVED PERMANENTLY il titolo del blogpost e’ cambiato il permalink cambia
  • 38. IL BLOGRESTful API, HTML, CSS ... e un po’ di JS (pjax) demo: git checkout v8 verifica che etag funziona ancora! anche col blog.
  • 39. demo: Amazon Cloud Front ALTRO ?cache control, layers, index dell’api, cdn, web cache, application firewall, reverse proxy ...
  • 40. CONTATTIAgile Coach, Giancarlo Valente twitter: @gncvalente www.giancarlovalente.it
  • 41. ENJOY AND HAVE FUN Learn some functional programming language Clojure, Haskell, Erlang ... the hacker that you save, could be you! Agile Coach, Giancarlo Valente twitter: @gncvalente www.giancarlovalente.it