9 Vývoj Internetových Aplikací Webová API
Ing. Jan Janoušek
API - Application Programming Interface - Definuje způsob interakce mezi: - Softwarovými komponentami • Interface
- Software a hardware • OpenGL • DirectX • OpenCL
- Celými systémy, či jejich částmi • • • •
Windows API Linux Kernel API SOAP REST
Proč API? -
Nezávislost. Škálovatelnost. Poskytování služeb třetím stranám. Vím co chci a je mi jedno jak toho dosáhnu (blackbox).
Web services - Webové služby jsou podmnožinou API. - Softwarový prostředek pro komunikaci mezi zařízeními prostřednictvím sítě. - Nejčastěji prostřednictvím HTTP protokolu. - XML vs. JSON - Nezávislost na platformě. - Nezávislost na programovacím jazyce. - Bezpečnost - Autentizace vs. autorizace - Podepisování požadavků - HTTP vs. HTTPS
REST - Representational State Transfer - Dnes nejrozšířenější typ webového API. - Bezstavová komunikace využívající HTTP protokol. - REST API je kolekcí zdrojů, na nichž je možné provádět operace. - Každý zdroj je jednoznačně identifikován svou URL. - HTTP metody GET, POST, PUT a DELETE. - Odpovědi serveru jsou nejčastěji XML, nebo JSON. - Škálovatelnost a možnost cachování. GET http://adresa-api.xyz/nazev-nebo-cesta-ke-zdroji/?parametry=volitelne GET https://graph.facebook.com/me/albums?fields=id%2Ccover_photo%2Clink&access_token=... DELETE https://graph.facebook.com/{id_objektu}?access_token=...
SOAP - Simple Object Access Protocol - V oblasti webu ne příliš používaná technologie. - Nejčastěji využívá protokolu HTTP, ale používají se i jiné, jako SMTP, TCP, JMS (Java Message Service). - Požadavek na server, tak jeho odpověď je XML dokument. POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: 299 SOAPAction: "http://www.w3.org/2003/05/soap-envelope" <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> <soap:Body> <m:GetStockPrice xmlns:m="http://www.example.org/stock"> <m:StockName>IBM
WSDL a UDDI - WSDL (Web Services Description Language) - Jazyk pro popis rozhraní webové služby pomocí XML. - Popis je strojově čitelný. - Automatické generování zdrojových kódů klienta.
- UDDI (Universal Description Discovery and Integration) - Databáze webových služeb. - Komunikace probíhá pomocí SOAP. - Poskytuje WSDL dokumenty k jednotlivým API. - Používá se spíše v korporacích.
Facebook API
https://developers.facebook.com/apps
- Vše je vázáno na Facebook aplikaci. - Social graph – kolekce všech dat vytvořených uživateli na FB provázaná do grafové struktury. - Široká škála služeb/API: - Graph API – Primární API pro čtení a tvorbu obsahu v rámci Social graph. - Open Graph – Nástroj pro vytváření/popis nových objektů v rámci Social graph. - Social Plugins – miniaplikace pro webové stránky.
Facebook - Graph API
https://developers.facebook.com/tools/explorer
- REST API vracející JSON. - Oficiální SDK existuje pro JavaScript, PHP, Android (Java), iOS (Objective-C) a Unity. - Pro komunikaci s API je potřeba ID aplikace a její privátní a veřejný klíč. - Operace spojené s daty konkrétních uživatelů jsou podmíněny autorizací. - graph.facebook.com /{node-id}/{edge-name}
https://developers.facebook.com/docs/graph-api/reference/
Facebook - Graph API
<script> window.fbAsyncInit = function() { FB.init({ appId : 'ID_APLIKACE', status : true, xfbml : true, version : 'v2.1' }); // Zde můžete pracovat s API FB.login(function(response) { FB.api('/me', function(response) { alert('Vaše jméno: ' + response.name); }); }, { scope: 'email,user_likes' }); }; (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/cs_CZ/all.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));
Facebook - Open Graph - Umožňuje ovlivňovat co a jak se sdílí na zeď uživatele. - Obsah je tvořen objektem, akcí a uživatelem. - Objekty a akce musejí projít schvalovacím procesem.
curl -X POST https://graph.facebook.com/me/{id-aplikace}:{akce} -F „objekt={url-stranky}" -F "access_token=………..„
Facebook - Open Graph protocol -
Open Graph protocol - http://ogp.me/ Metadata pro popis objektů. Využívá i Google+ https://developers.facebook.com/tools/debug
<meta property="og:title" content="The Rock" /> <meta property="og:type" content="video.movie" /> <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" /> <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
Facebook - Social Plugins -
Miniaplikace pro webové stránky. Tlačítka Like, Share, Send a Follow Embedded Posts Comments Plugin Activity Feed Registration Recommendations Bar A další…
https://developers.facebook.com/docs/plugins/
Google API
https://cloud.google.com/console
- Vše je vázáno na aplikaci. - Velká škála služeb/API (REST) – Maps, YouTube, Google+, Translate, Visualisation, Analytics, AdSense, Calendar, Drive, Web Fonts, Cloud Storage, Cloud SQL a spousta dalších. - Kvalitní dokumentace. - Oficiální knihovny pro širokou škálu jazyků – JavaScript, Python, Java, Ruby, PHP, Go, C#
Google Maps -
https://cloud.google.com/console
Oficiální SDK: Web (JavaScript), iOS a Android Vyžaduje API klíč. Vlastní vrstvy a značky . Zdarma ale omezení na počet požadavků. Zahrnuje další API: <script type="text/javascript„ -
Directions Distance Matrix Elevation Geocoding Time Zone
src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensr =SET_TO_TRUE_OR_FALSE"> <script type="text/javascript"> function initialize() { var mapOptions = { center: new google.maps.LatLng(-34.397, 150.644), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var el = document.getElementById("map-canvas"); var map = new google.maps.Map(el, mapOptions); } google.maps.event.addDomListener(window, 'load', initialize);
Google+ widgets -
Tlačítka +1, Follow a Share Embedded posts Badge Snippet
https://developers.google.com/+/web/
OAuth 2.0 - Otevřený standard pro autorizaci (ne autentizaci) přístupu k datům uživatele. - Pro bezpečný běh vyžaduje SSL (HTTPS). - Obsahuje několik procesů/toků autorizace: -
User-Agent Flow Web Server Flow Username and Password Flow Assertion Flow Client Credentials Flow
- Využívá jej Facebook, Google, Twitter a spousta dalších serverů.
OAuth 2.0 – Web Server Flow
OAuth 2.0 – User-Agent Flow
Další API - Twitter – sociální síť - https://dev.twitter.com/ - Dropbox API – uložiště https://www.dropbox.com/developers - Box.net – uložiště - http://developers.box.net/ - Flickr – fotografie http://www.flickr.com/services/api/ - Last.fm – hudba - http://www.last.fm/api - Foursquare – sociální síť https://developer.foursquare.com/ - Evernote – poznámky http://dev.evernote.com/doc/ - Mapy.cz – mapy - http://api.mapy.cz/ - Vimeo – video - http://developer.vimeo.com/