Präsentation

Werbung
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
Herunterladen