RESTful APIs      giancarlo valente - @gncvalente
l’idea e’ semplice:usare il protocollo che fa’ “muovere” il webper realizzare l’architettura a servizi di un sistema compl...
l’idea e’ semplice:usare il protocollo che fa’ “muovere” il webper realizzare l’architettura a servizi di un sistema compl...
TANTE IMPLEMENTAZIONI         DI ARCHITETTURE        A SERVIZI DISTRIBUITIDCOMCORBAWS_*HTTP-RPC...
WWW         il web e un insieme di servizi (APIs),   utilizzabili dagli uomini, attraverso un browser                    e...
il web e lAPI distribuita di maggior successo                   perche?
HTTP                                DOCUMENT BASED                                  PROTOCOL          il client mette un d...
METHOD INFORMATIONSCOPING INFORMATION     cosa devo fare, e su cosa                             Per Classificare le varie ...
METHOD INFORMATIONSCOPING INFORMATION       cosa devo fare, e su cosa                WS* -    Method information ==> body ...
METHOD INFORMATION SCOPING INFORMATION                  cosa devo fare, e su cosa                          WS* -          ...
METHOD INFORMATION SCOPING INFORMATION                        REST          Method information ==> HTTP verb            Sc...
DIFFERENZA                     in REST ragiono per nomi                       (invece che per verbi)          i verbi sono...
ESEMPIOdevo aggiungere un prodotto al carrello          POST /cart/{cartId}           Body: prodotto    devo creare una nu...
RESOURCE ORIENTED        ARCHITECTURESROA is a way of turning a problem into a RESTful web service:   an arrangement of UR...
PRINCIPI: ADRESSABILITY           URI (adressability principle)           naming things as resources every resouce is iden...
PRINCIPI: REPRESENTATION    Rappresentazioni (representation oriented) la comunicazione avviene tramite rappresentazioni
PRINCIPI: UNIFORMINTERFACEHTTP method (uniform interface principle)     GET                  SAFE                IDEMPOTEN...
PRINCIPI: STATELESS Stateless (stateless communication)
FRAMEWORKS PER REALIZZARE UN  REST SERVICE? Ruby ---> webmachine, sinatra     node.js ---> connect        C# --> nancy
WEBMACHINEErlang toolkit ... build full featured HTTP services        progetto finale, mini blog engine,            complet...
RESTFUL BLOG/posts         GET, POST   html, json json
RESTFUL BLOG/posts                 GET, POST     html, json json/post/{permalink}   GET, PUT, DELETE html, json json
RESTFUL BLOG/posts                 GET, POST     html, json json/post/{permalink}   GET, PUT, DELETE html, json json/tags ...
RESTFUL BLOG/posts                 GET, POST     html, json json/post/{permalink}   GET, PUT, DELETE html, json json/tags ...
RESTFUL BLOG/posts                 GET, POST     html, json json/post/{permalink}   GET, PUT, DELETE html, json json/tags ...
faccio vedere subito il               RESTFUL BLOG                          risualtato finale                             ...
demo:               simple resource               git checkout “tag” v1               fa’ output di un testoHTTP E’ SOLO T...
CODICE                   demo:                   rappresentazioni                   json e html        demo:              ...
RISORSA SEMPLICEinvia in output la configurazione di input
RISORSA CON TEMPLATE    home page del blog, da template.
RAPPRESENTAZONIrisorsa con rappresentazioni in JSON e HTML
ACCEPT: JSONrisorsa che accetta in ingresso JSON
MATURITY LEVEL 3le risorse includono dei link, per indirizzare il client, verso la URI             della risorsa stessa, o...
MATURITY LEVEL 3le risorse includono dei link, per indirizzare il client, verso la URI             della risorsa stessa, o...
demo                                        demo col browser                                        git checkout v7GET CON...
GET CONDIZIONALE           etag     with webmachine
MOVED PERMANENTLY   il titolo del blogpost e’ cambiato            il permalink cambia
IL BLOGRESTful API, HTML, CSS ... e un po’ di JS (pjax)                              demo:                              gi...
demo:                                                Amazon Cloud Front                       ALTRO ?cache control, layers...
CONTATTIAgile Coach, Giancarlo Valente    twitter: @gncvalente   www.giancarlovalente.it
ENJOY AND HAVE FUN Learn some functional programming language          Clojure, Haskell, Erlang ...          the hacker th...
RESTful APIs (ITA) - /w WebMachine
Upcoming SlideShare
Loading in …5
×

RESTful APIs (ITA) - /w WebMachine

2,147 views

Published on

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

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • 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.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,147
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
0
Comments
1
Likes
1
Embeds 0
No embeds

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
  • RESTful APIs (ITA) - /w WebMachine

    1. 1. RESTful APIs giancarlo valente - @gncvalente
    2. 2. l’idea e’ semplice:usare il protocollo che fa’ “muovere” il webper realizzare l’architettura a servizi di un sistema complesso
    3. 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. 4. TANTE IMPLEMENTAZIONI DI ARCHITETTURE A SERVIZI DISTRIBUITIDCOMCORBAWS_*HTTP-RPC...
    5. 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. 6. il web e lAPI distribuita di maggior successo perche?
    7. 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. 8. METHOD INFORMATIONSCOPING INFORMATION cosa devo fare, e su cosa Per Classificare le varie tipologie di servizi
    9. 9. METHOD INFORMATIONSCOPING INFORMATION cosa devo fare, e su cosa WS* - Method information ==> body Scoping information ==> body es. AddItem(cartId)
    10. 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. 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. 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. 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. 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. 15. PRINCIPI: ADRESSABILITY URI (adressability principle) naming things as resources every resouce is identified by a unique identifier
    16. 16. PRINCIPI: REPRESENTATION Rappresentazioni (representation oriented) la comunicazione avviene tramite rappresentazioni
    17. 17. PRINCIPI: UNIFORMINTERFACEHTTP method (uniform interface principle) GET SAFE IDEMPOTENT PUT NOT SAFE IDEMPOTENT POST NOT SAFE NOT IDEMPOTENT DELETE NOT SAFE IDEMPOTENT
    18. 18. PRINCIPI: STATELESS Stateless (stateless communication)
    19. 19. FRAMEWORKS PER REALIZZARE UN REST SERVICE? Ruby ---> webmachine, sinatra node.js ---> connect C# --> nancy
    20. 20. WEBMACHINEErlang toolkit ... build full featured HTTP services progetto finale, mini blog engine, completamente restful
    21. 21. RESTFUL BLOG/posts GET, POST html, json json
    22. 22. RESTFUL BLOG/posts GET, POST html, json json/post/{permalink} GET, PUT, DELETE html, json json
    23. 23. RESTFUL BLOG/posts GET, POST html, json json/post/{permalink} GET, PUT, DELETE html, json json/tags GET html, json
    24. 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. 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. 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. 27. demo: simple resource git checkout “tag” v1 fa’ output di un testoHTTP E’ SOLO TESTO
    28. 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. 29. RISORSA SEMPLICEinvia in output la configurazione di input
    30. 30. RISORSA CON TEMPLATE home page del blog, da template.
    31. 31. RAPPRESENTAZONIrisorsa con rappresentazioni in JSON e HTML
    32. 32. ACCEPT: JSONrisorsa che accetta in ingresso JSON
    33. 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. 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. 35. demo demo col browser git checkout v7GET CONDIZIONALE etag it is not caching, it is much more!
    36. 36. GET CONDIZIONALE etag with webmachine
    37. 37. MOVED PERMANENTLY il titolo del blogpost e’ cambiato il permalink cambia
    38. 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. 39. demo: Amazon Cloud Front ALTRO ?cache control, layers, index dell’api, cdn, web cache, application firewall, reverse proxy ...
    40. 40. CONTATTIAgile Coach, Giancarlo Valente twitter: @gncvalente www.giancarlovalente.it
    41. 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

    ×