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" <!- -> <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:header> </soap:header> <soap:body> <m:getstockprice xmlns:m="http://www.example.org/stock"> <m:stockname>ibm</m:stockname> </m:getstockprice> </soap:body> </soap:envelope>
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 <div id="fb-root"></div> <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')); </script>
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: - Directions - Distance Matrix - Elevation - Geocoding - Time Zone <script type="text/javascript 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); </script>
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/