The Internet is full of Web Services, everyday more and more. Some services offer API (application programming interface) that developers use to build new applications (mash-ups). One of the most known and used technology for the machine-to-machine communication is SOAP (Simple Object Access Protocol) but in the last years we can use another paradigm, ReST (Representational State Transfer). How does it work?
2. Oscar Zambotti is a student of Information Technology at the Faculty of Science, University of Trento. He attended the 9-months course "ICT secure programming expert" in Bozen offered by the European Social Fund. Now he's in FBK for his stage period in the SoNet Group and following the “ Presentation or die ” motto is giving this presentation in the very beginning of his stage. Oscar is very interested in social networking and programming applications about it. He is also a speaker and DJ in a local radio station. http://www.oskarnrk.net [email_address] Bio “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
8. “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 “ The challenge now is to join forces to research on Software & Services Technologies, to bring advances to the market and to ensure European leadership in the new Internet economy: The Internet of Services.” Internet of Services, Software and Virtualisation - Objective ICT 2009.1.2, Call 5 of the Seventh Framework Programme (2007-2013) European Commission - Information Society and Media “ The Internet has shown remarkable resilience and flexibility in the face of ever increasing numbers of users, data volume, and changing usage patterns, but faces growing challenges in meetings the needs of our knowledge society. This is the moment to start designing the Internet of the Future.” Future Internet - Research programs of the CIT (Center for Innovation Technology) Fondazione Bruno Kessler The vision of the “Future Internet”
11. Access limitations? What is a web service? “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
12. Use of web services? E.g. Flickrvision “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 Flickr photos with Google Maps
13. A mashup is a Web application that combines data or functionality from one or more sources into a single integrated application. http://www.programmableweb.com “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 Web services for mashups
14. “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 ProgrammableWeb statistics 1308 APIs 3957 Mashups (12 May 2009) The trend...
16. SOAP ( Simple Object Access Protocol ) uses XML and RPC or HTTP . Businesses can register their WS on UDDI ( Universal Description, Discovery and Integration ) and provide documentation with WSDL ( Web Services Description Language ) “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 image: Wikipedia How to use a web service: SOAP image: Wikipedia
17. <soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/ " xmlns:xsd=" http://www.w3.org/2001/XMLSchema " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "> <soapenv:Body> <req:echo xmlns:req=" http://localhost:8080/axis2/services/MyService/ "> <req:category>classifieds</req:category> </req:echo> </soapenv:Body> </soapenv:Envelope> “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 How to use a web service: SOAP /2 Sample: Request...
18. <soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/ " xmlns:wsa=" http://schemas.xmlsoap.org/ws/2004/08/addressing "> <soapenv:Header> <wsa:ReplyTo> <wsa:Address> http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous </wsa:Address> </wsa:ReplyTo> <wsa:From> <wsa:Address> http://localhost:8080/axis2/services/MyService </wsa:Address> </wsa:From> <wsa:MessageID> ECE5B3F187F29D28BC11433905662036 </wsa:MessageID> </soapenv:Header> <soapenv:Body> <req:echo xmlns:req=" http://localhost:8080/axis2/services/MyService/ "> <req:category>classifieds</req:category> </req:echo> </soapenv:Body> </soapenv:Envelope> “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 How to use a web service: SOAP /3 ...Response
19. ReST ( Representational State Transfer ) is an architectural style for distributed hypermedia systems, it is not just a method for building web services. Introduced by Roy Thomas Fielding in his dissertation to become Ph.D. in 2000. Resource -> URI Interaction -> Representation An application can interact with a resource by knowing the identifier of the resource (URI), and the action required (HTTP methods). ReST is stateless . How to use a web service: ReST “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
20. HTTP consists in URIs, methods, status codes... The most important HTTP methods compose the basic functions in computer science: CRUD How to use a web service: ReST /2 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 HTTP CRUD SQL POST Create INSERT GET Read SELECT PUT Update UPDATE DELETE Delete DELETE
21. http://example.com/losties How to use a web service: ReST /3 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 POST - C reate - GET - R ead - PUT - U pdate - DELETE - D elete - Create a new passenger List http://example.com/losties/4815162342 Response format: HTML, XML (RSS, Atom, “custom”) , JSON, ... Suggested reading: “How I explained ReST to my wife” (Ryan Tomayko) POST - C reate - GET - R ead - PUT - U pdate - DELETE - D elete - Passenger data Update passenger data Delete passenger
22. An application is ReSTful when has resources accessible by representations. http://example.com/losties/4815162342 Some services are ReST-like : you use HTTP methods but using APIs methods as parameters (Flickr). http://example.com/losties/getLostie?id=4815162342 Nouns vs Verbs How to use a web service: ReST /4 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
23. A large number of developers chooses ReST instead of SOAP. “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 SOAP vs. ReST on ProgrammableWeb
25. What is Twitter? Example: Twitter “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
26. Twitter REST API Method: statuses/show Returns a single status, specified by the id parameter below. The status's author will be returned inline. URL: http://twitter.com/statuses/show/id.format Formats: xml, json, rss, atom HTTP Method(s): GET Requires Authentication: false, unless the author of the status is protected Example: Twitter /2 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 Twitter REST API Method: statuses/update Updates the authenticating user's status. Requires the status parameter specified below. Request must be a POST. A status update with text identical to the authenticating user's current status will be ignored to prevent duplicates. URL: http://twitter.com/statuses/update.format Formats: xml, json, rss, atom HTTP Method(s): POST Requires Authentication: true http://apiwiki.twitter.com/Twitter-API-Documentation Some methods require authentication (OAuth)
27. import httplib # some code... def fetch_following(self): conn = httplib.HTTPConnection("twitter.com") conn.request("GET","/friends/ids/"+self.screen_name+".json") r1 = conn.getresponse() print r1.read() conn.close() Example: Twitter /3 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 Output (sample!): user IDs [5428712,31528501,6603122,30304051,30303627,5159271, 17572031,15147484] Obj: fetch the list of the user IDs that a user is following
28. What is Flickr? Screenshot Example: Flickr “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
29. Developers need a couple of keys to use the APIs. Some methods require authentication. Example: Flickr /2 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
30. REST Request Format REST is the simplest request format to use - it's a simple HTTP GET or POST action. The REST Endpoint URL is http://api.flickr.com/services/rest/ To request the flickr.test.echo service, invoke like this: http://api.flickr.com/services/rest/?method=flickr.test.echo&name=value By default, REST requests will send a REST response. Example: Flickr /3 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 http://www.flickr.com/services/api/ Some methods require authentication.
31. import urllib, urllib2, json FRI = " http://api.flickr.com/services/rest/ ?" KEY = "d00fa386476950f75555555555555555" SECRET = "cac879e555555555" FORMAT = "json" # some code... def people_find_by_username(username): # some code... def contacts_get_public_list(username): nsid = people_find_by_username(username) req = {'method': CONTACTS_GETPUBLICLIST, 'api_key': KEY, 'user_id': nsid, 'format': FORMAT, 'nojsoncallback': 1} params = urllib.urlencode(req) contacts_public_list = urllib2.urlopen(FRI,params).read() print contacts_public_list Example: Flickr /4 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 HTTP POST (implicit) Obj: fetch the list of the friends a user
32. Example: Flickr /5 “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 Output (sample!): collection (dictionaries, lists) {"contacts": {"page":1, "pages":1, "per_page":1000, "perpage":1000, "total":39, "contact": [{"nsid":"81107858@N00", "username":"Jack", "iconserver":"207", "iconfarm":1, "ignored":0}, {"nsid":"23578585@N00", "username":"Locke", "iconserver":"211", "iconfarm":1, "ignored":0}, {"nsid":"81158128@N00", "username":"Sawyer", "iconserver":"147", "iconfarm":1, "ignored":0}, {"nsid":"29563291@N00", "username":"Hurley", "iconserver":"182", "iconfarm":1, "ignored":0}, {"nsid":"20347812@N00", "username":"Kate", "iconserver":"113", "iconfarm":1, "ignored":0}]}, "stat":"ok"}
34. Web-based tool, with prepopulation using Web APIs, that displays the network of a user and its evolution over some social networks before and after a defined event . What am I going to do? Socialdash “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009
35. Questions? Ideas? Suggestions? Thanks “ The Internet as Web Services: introduction to ReST” – Oscar Zambotti, 2009 http://sonet.fbk.eu
39. Representational State Transfer (ReST) by Roy Thomas Fielding http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm http://www.ics.uci.edu/~fielding/