Proseminar Web Engineering PS07: Retrieving data from social networks: APIs and protocols Wir wollen Daten aus sozialen Netzwerken. Quelle: http://www.flickr.com/photos/theplanetdotcom/4878805271 Wir brauchen Schnittstellen. Quelle: http://www.flickr.com/photos/78317189@N00/2106395842 APIs (1993) "Application program interface„ "Schnittstelle für Anwendungsprogramme". Die Nutzung von APIs erlaubt es Softwareentwicklern, Anwendungen zu schreiben und dabei bereits vorhandene, standardisierte Bibliotheksroutinen zu nutzen. Quelle: http://lexikon.martinvogel.de/api.html Quelle: http://www.dastimmtdochwasnicht.de/MyUploads/071221_Ziehen.jpg APIs sind Designprobleme SOAP vs REST Seife? Simple Object Access Protocol Quelle: http://www.flickr.com/photos/annia316/4492308897 SOAP • Protokoll mit Regeln für Nachrichtendesign • Konvention für entfernte Prozeduraufrufe • Nutzt Netzwerkprotokolle auf Transport- und Anwendungsschicht (HTTP(S), SMTP) • Nutzt XML zur Repräsentation • Unterstützung von z.B. IBM, Microsoft SOAP – Aufbau Request <?xml version="1.0"?> <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> <s:Header> </s:Header> <s:Body> <m:UserInDatabase xmlns:m="http://www.socialnetworkdb.de/soap"> meinUsername </m:UserInDatabase> </s:Body> </s:Envelope> SOAP – Aufbau Response <?xml version="1.0"?> <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> <s:Header> <m:RequestID xmlns:m="http://www.socialnetwork-db.de/soap"> a3f5c109b </m:RequestID> </s:Header> <s:Body> <m:DbResponse xmlns:m="http://www.socialnetwork-db.de/soap"> <m:user> <!-- Infos zum User --> </m:user> </m:DbResponse> </s:Body> </s:Envelope> SOAP vs REST to rest = ausruhen? Representational State Transfer Quelle: http://bit.ly/tig2b7 REST • • • • • Web-Paradigma, aber keine Norm Interaktionen sind zustandslos Caching möglich Repräsentation von Ressourcen Baut auf HTTP auf HTTP CRUD SQL POST GET PUT DELETE CREATE READ UPDATE DELETE INSERT SELECT UPDATE DELETE Status – GET, POST, DELETE User – GET, POST, PUT, DELETE Like – GET, POST, DELETE Quelle: https://farm1.static.flickr.com/194/503716476_6f08285ac3_o.png Alexa-Rank: 2 800 Mio. aktive Nutzer Alexa-Rank: 9 100 Mio. aktive Nutzer Alexa-Rank: 13 Mehr als 135 Mio. Nutzer 50 Mio. Nutzer Zugriff auf Daten per… Graph API (Facebooks REST API) REST API (, Streaming API, Search API) REST API REST API (noch in Entwicklung) Wo SOAP genutzt wird: • • • • Flickr (neben REST-API) eBay Powerseller Amazon (neben REST-API) Google Search API bis 2009 (eingestellt) Beispiele https://graph.facebook.com GET /{userid}/ GET /{userid}/feed GET /{statusid} GET /{statusid}/likes POST /{statusid}/likes DELETE /{statusid}/likes Beispiele https://api.twitter.com/1 GET /users/lookup.json?screen_name={name} GET /statuses/public_timeline.xml POST /statuses/update POST /statuses/destroy/{tweet-id} GET /users/profile_image/{twitter-username} Quelle: http://www.readwriteweb.com/hack/2011/07/twitter-serves-more-api-calls.php Viele Nutzer + viele Daten = viel Traffic Quelle: http://www.flickr.com/photos/vgm8383/2191223539 Rate-Limits: Je Applikation 600 Anfragen in 600 sec Je IP 150/h oder je Benutzer 350/h Netzwerk-Updates: 300/h je Benutzer Je Entwickler 1000 pro Tag Pagination: offset, limit / until, since / paging.next, paging.previous page, rpp (return per page) / max_id start, count maxResults, nextPageToken Quelle: http://www.flickr.com/photos/brandoncwarren/4334456172 Daten in Echtzeit bekommen Twitter Streaming API Response HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.25) {…} {…} {…} Quelle: http://www.etuc.org/IMG/jpg/2000-Euromanif_Porto02-2.jpg It‘s demo time SOAP vs REST Fazit • REST bietet Caching • REST ist skalierbarer • REST lässt sich mit HTTP einfach in Anwendungen oder Webseiten einbinden • SOAP zustandsorientiert, REST zustandslos • REST verursacht weniger Daten-Traffic • SOAP bietet mehr Zuverlässlichkeit bei der Übertragung • Mit REST ist die Sicherheit in Webanwendungen einfacher kontrollierbar Vielen Dank für die Aufmerksamkeit! POST /question GET /answer