API:er/Mashup Föreläsning 4 API:er och Mashups Webbteknik II, 1DV449 Johan Leitet johan.leitet@lnu.se twitter.com/leitet facebook.com/leitet
F04 API:er Mashup Dagens agenda API RSS Säkerhet Mashup Resurser
API Application Programming Interface OS-API Graphics UI Network Controls Services File I/O Printer Radio
API API:er på Internet Internet Google maps Twitter Blocket YouTube Filckr Polisen Barometern.se Booli Facebook...
API
Pros and Cons Fördelar Många nya tjänster Alla kan bidra Alla kan konsumera Förenklar vid utveckling för olika applikationer Nackdelar Kan vi lita på datan? Vad händer när ett API stänger ner? Vad händer när ett API ändrar villkoren?
Varför dela data? 1) Få din tjänst att användas 2) Konkurensfördel 3) Informationen är betald med skattemedel 4) Knyta utvecklare som skapar tjänster 5) Företagets interna system kan kräva detta 6) Don t be evil
Hur dela? API Data kan exempelvis levereras som: RSS ATOM Egen XML JSON (CSV, HTML, PDF, Excel) Eget format
Facade Pattern GET GROUP/USER/547
Facade Pattern Källa: http://en.wikipedia.org/wiki/facade_pattern Användbart när: Förenkla. Göra förståligt Göra läsbart Minska beroenden Samla flera APIer API API API API
Ytterligare inkapsling API My Twitter API (wrapper) Utvecklarkod
Resultatet
RSS
RSS Rich Site Summary (RSS 0.9x) RDF Site Summary (RSS 0.9 och 1.0) Really Simple Syndication (RSS 2.x) Atom 1.0 Som användare kan man prenumerera på RSS-dokument (en xml-fil) och på så sätt få uppdateringar utan att behöva besöka alla sidorna. Kan naturligtvis användas i flertalet andra situationer där flödande information är viktigt och e-post kan kännas påfluget. (poddning)
RSS-läsare För att kunna ta del av denna information så behöver man en läsare, precis som ett e-postprogram. Det finns massor av RSS-läsare. En del är kommersiella men de allra flesta är gratis. Det finns program som man laddar ner och installerar och det finns online-tjänster. Många webbläsare har stöd för RSS.
Hur ser RSS ut? (version 2.0) <rss version="2.0"> <channel> <title>xml.com</title> <link>http://www.xml.com/</link> <description>xml.com features a rich mix for the XML community.</description> <language>en-us</language> <webmaster>some@userland.com</webmaster> <item> <title>normalizing XML, Part 2</title> <link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link> <description>summeringkan skrivas här </description> <pubdate>mon, 30 Sep 2002 01:56:02 GMT</pubDate> </item> <! Fyll på med fler <item> --> </channel> </rss>
RSS 2.0 Under channel-taggen: title Titel på RSS-kanalen link Länk till huvudsidan description En beskrivning av vad RSS:en handlar om language Vilket språk som det skrivs på copyright Eventuella rättigheter lastbuilddate När den uppdaterades senast Under item-taggen: title Titel på inlägget link Länk till sidan där man kan läsa vidare description En kort beskrivning av inlägget author E-postadressen till författaren category om man vill dela upp i kategorier comments URL till en sida med eventuella kommentarer guid Unikt id på inlägget pubdate Publiceringsdatum
Atom <feed xmlns="http://www.w3.org/2005/atom"> <id>http://www.example.org/myfeed</id> <title>my Podcast Feed</title> <updated>2005-07-15t12:00:00z</updated> <author> <name>james M Snell</name> </author> <link href="http://example.org" /> <link rel="self" href="http://example.org/myfeed" /> <entry> <id>http://www.example.org/entries/1</id> <title>atom 1.0</title> <updated>2005-07-15t12:00:00z</updated> <link href="http://www.example.org/entries/1" /> <summary>an overview of Atom 1.0</summary> <link rel="enclosure" type="audio/mpeg" title="mp3" href="http://www.example.org/myaudiofile.mp3" length="1234" /> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> <h1>show Notes</h1> <ul> <li>00:01:00 -- Introduction</li> <li>00:30:00 -- Wrapping up</li> </ul> </div> </content> </entry> </feed>
Säkerhet FIEO
Klient - Server Validera all indata! Låt inte användaren mata in lösenord till en annan tjänst på din sajt. OAuth Använd SSL för känslig data. LÄS DENNA! https://dev.twitter.com/docs/security-best-practices
Använda externt API Validera all indata! Se till att din applikation inte går ner om API:t gör det. LÄS DENNA! https://dev.twitter.com/docs/security-best-practices
Eget API Validera all indata! Använd SSL för känslig data. Begränsa antalet möjliga anrop API key LÄS DENNA! https://dev.twitter.com/docs/security-best-practices
OAuth
API Skapa API:et först? "Förr" Idag
Explorable Predictable Consistent Alex Payne API Lead, Twitter Inc.
KISS Viktigt att få det rätt från början Ska vara lätt att använda och förstå Ska vara svårt att använda på fel sätt http://namnapi.se/
Dokumentation Hur det fungerar - Indata - Utdata Hur det är tänkt att användas Hur får det användas Kodexempel Underhåll!
Hantera versioner
URI-versioner http://api.mysite.se/v1/stuff/ http://api.mysite.se/v2/stuff/ http://api.facebook.com/ http://graph.facebook.com/ Sätt upp en maillista!
Exempel på APIr
Mashup Mashup är en typ av webbapplikation som sammanställer information och funktionalitet från fler av varandra oberoende källor. /Wikipedia
Exempel på mashups omvård.se superlokal.se flightradar24.com vackertvader.se
mashup.se/apikatalog Svenska resurser