Presentation is loading. Please wait.

Presentation is loading. Please wait.

Api web 2.0. Representational state transfer REST is not a protocol or a format its a kind of architecture A service is accessed with its URI through.

Similar presentations


Presentation on theme: "Api web 2.0. Representational state transfer REST is not a protocol or a format its a kind of architecture A service is accessed with its URI through."— Presentation transcript:

1 Api web 2.0

2 Representational state transfer REST is not a protocol or a format its a kind of architecture A service is accessed with its URI through HTTP operation like GET, POST, PUT or DELETE. Enough for most of web services Example : http://www.inria.fr/add?var=1&var=2 3 ;)http://www.inria.fr/add?var=1&var=2

3 HTTP Query with JAVA Init the HTTP query: URL url = new URL("my_url"); HttpURLConnection UrlConn = (HttpURLConnection) url.openConnection(); urlConn.setRequestMethod("GET"); urlConn.setAllowUserInteraction(false); urlConn.setDoOut put(true); Read the answer InputStream response = urlConn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(response)); while ((String line = o_oBufReader.readLine()) != null){ //do whatever you want } Diconnect urlConn.disconnect();

4 AJAX Asynchronous javascript HTTP query in javascript without reloading all the page Richer interfaces Example: mail notification and instant messaging in gmail.

5 AJAX : init the query Var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); // Firefox, Safari,... } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer } or try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); //try Internet Explorer }catch(e) { xhr = new XMLHttpRequest() //firefox, safari... }

6 AJAX : send and process query Process function : request.onreadystatechange = function(){ // instructions }; Send the query : xhr.open('GET', 'http://web2/api/method?param=value', true); xhr.send(null); Important: Same Origin Policy So use a servlet as intermediary

7 JSON: JavaScript Object Notation http://www.json.org/ http://www.json.org/ JSON object: var person = { "name" : "John" "phone" : [ {"type" : "home", "num" : "1234"}, {"type" : "mobile", "num" : "5678"} ] }; person.name; person.phone[0].num; Eval function: var JSONString = "someVar = { 'color' : 'blue' }"; eval(JSONString); Tutorial: http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)

8 API flickr http://www.flickr.com/services/api/ http://www.flickr.com/services/api/ API_Key and secret: http://www.flickr.com/services/api/keys/apply/ Note : il faut un compte Yahoo pour y accèder. URL API: http://api.flickr.com/services/rest/?metho d=method_name¶m1=value1¶m2=value2... Paramètre souvent requis: api_key –On demande la clé en ligne, cf URL ci-dessus. Recherche de photos par tags: http://api.flickr.com/services/rest/?method= flickr.photos.search&tags=a_tag&api_key=yo ur_key

9 Example of XML Response URL API: http://api.flickr.com/services/rest/?metho d_name¶m1=value1¶m2=value2... Paramètre souvent requis: api_key Recherche de photos par tags: http://api.flickr.com/services/rest/?method= flickr.photos.search&tags=a_tag&api_key=yo ur_key

10 Don't worry: API JAVA ;) Dom API: DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance(); DocumentBuilder constructeur = fabrique.newDocumentBuilder(); Document document = constructeur.parse(rdfFile); Element racine = document.getDocumentElement(); NodeList photos = racine.getElementsByTagName("photo"); for(int i = 0; i < photos.getLength(); i++){ photos.item(i).getAttributes() … } Or just forget to manipulate XML: http://sourceforge.net/projects/flickrj/ http://sourceforge.net/projects/flickrj/

11 FlickrJ: API JAVA http://sourceforge.net/projects/flickrj/ http://sourceforge.net/projects/flickrj/ Init service: Flickr flickr = new Flickr(apiKey, secret, new REST()); Different interfaces: –flickr.getPhotosInterface() –flickr.getPeopleInterface() –flickr.getContactsInterface() –flickr.getLicensesInterface() –flickr.getTagsInterface() –…

12 FlickrJ: example http://sourceforge.net/projects/flickrj/ http://sourceforge.net/projects/flickrj/ Init service: Flickr flickr = new Flickr("47422029b3aabee4aca6a5853eca74b6", "ab7f2d30639a9828", new REST()); PhotosInterface pi = flickr.getPhotosInterface(); SearchParameters sp = new SearchParameters(); String []tabTag = {« cars »}; sp.setTags(tabTag); PhotoList photoList = pi.search(sp, 50, 1); Iterator it = photoList.iterator(); while (it.hasNext()) { Photo photo = (Photo) it.next(); out.println(" "); }

13 JSON and flickr http://api.flickr.com/services/rest/?method=method_name& format=json URL API: Example: flickr.blogs.getListflickr.blogs.getList –XML response –JSON response rsp = { "stat": "ok", "blogs": { "blog": [{ "id" : "73", "name" : "Bloxus", "url" : "..." } { "id" : "74", "name" : "Manila", "url" : "..." } ] } } URL API: Example for (var i=0; i { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.com/2/513555/slides/slide_13.jpg", "name": "JSON and flickr http://api.flickr.com/services/rest/ method=method_name& format=json URL API: Example: flickr.blogs.getListflickr.blogs.getList –XML response –JSON response rsp = { stat : ok , blogs : { blog : [{ id : 73 , name : Bloxus , url : ... } { id : 74 , name : Manila , url : ... } ] } } URL API: Example for (var i=0; i

14 Youtube http://code.google.com/apis/youtube http://code.google.com/apis/youtube API key and secret: http://code.google.com/apis/youtube/dashboard REST interface: http://www.youtube.com/api2_rest To request a response in JSON format, use the alt=json parameter. Server side API: Java,.NET, PHP, python … Widget and players API (client side): javascript, flash

15 API JAVA Youtube http://code.google.com/p/gdata-java-client/downloads/list http://code.google.com/p/gdata-java-client/downloads/list Import import com.google.gdata.client.youtube.YouTubeService; import com.google.gdata.util.ServiceException; Init service YouTubeService myService = new YouTubeService("the name of my app"); Init search query: YouTubeQuery query = new YouTubeQuery(new URL(URL_VIDEOS_FEED)); Appel au service: VideoFeed videoFeed = service.query(query, VideoFeed.class); for (VideoEntry ve : videoFeed.getEntries()) {... }

16 API Youtube Parametrize query: –search terms: query.setVideoQuery(searchTerms); –Order: RELEVANCE, VIEW_COUNT, PUBLISHED, RATING : query.setOrderBy(YouTubeQuery.OrderBy.RELEVANCE); –Number of results: query.setMaxResults(count); –Pagination: query.setStartIndex(start); –include restricted content (excluded by default): query.setIncludeRacy(true); Code example

17 Google search: AJAX API http://code.google.com/apis/ajaxsearch/documentation/ http://code.google.com/apis/ajaxsearch/documentation/ Basis: // create a search control var searchControl = new google.search.SearchControl(null); // add in a full set of searchers searchControl.addSearcher(new google.search.LocalSearch()); searchControl.addSearcher(new google.search.WebSearch()); searchControl.addSearcher(new google.search.VideoSearch()); searchControl.addSearcher(new google.search.BlogSearch()); searchControl.addSearcher(new google.search.NewsSearch()); searchControl.addSearcher(new google.search.ImageSearch()); searchControl.addSearcher(new google.search.BookSearch()); searchControl.addSearcher(new google.search.PatentSearch()); // tell the searcher to draw itself and tell it where to attach // Note that an element must exist within the HTML document with id "search_control" searchControl.draw(document.getElementById("search_control"));

18 Google search: AJAX API http://code.google.com/apis/ajaxsearch/documentation/ http://code.google.com/apis/ajaxsearch/documentation/ SearcherControl Draw Modes: –create a drawOptions object var drawOptions = new google.search.DrawOptions(); –tell the searcher to draw itself in linear mode drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_LINEAR); –tell the searcher to draw itself in linear mode drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED); –decouple the "search form" from the set of search results drawOptions.setSearchFormRoot(document.getElementById("id_dom_elem")); –Display results : searchControl.draw(element, drawOptions);

19 Google search: AJAX API http://code.google.com/apis/ajaxsearch/documentation/ http://code.google.com/apis/ajaxsearch/documentation/ Keeping a Search Result : // establish a keep callback searchControl.setOnKeepCallback(this, MyKeepHandler); function MyKeepHandler(result) { // clone the result html node var node = result.html.cloneNode(true); // attach it var savedResults = document.getElementById("saved_results"); savedResults.appendChild(node); }

20 Google map http://code.google.com/apis/ajaxse arch/ http://code.google.com/apis/ajaxse arch/ http://gmaps-samples.googlecode.com/svn/trunk/demogallery.html

21 API Facebook Install facebook "Developper" application to get API_Key and secret. Interface restful: http://api.facebook.com/restserver.php?v=1.0&api_key=YOUR_API_KEY &method=METHOD_NAME&sig=METHOD_OPTIONS FacebookML: A meta language to develop facebook apps (interpreted on facebook servers) FQL: Facebook Query Language Server API: Php, java,.NET, etc;

22 API java pour Facebook Plus maintenue par facebook: Alternatives: http://code.google.com/p/facebook-java-api http://code.google.com/p/facebook-java-api Authentification de l'application: Facebook fb = new Facebook(request, response, FB_API_KEY, FB_SECRET_KEY); fb.requireLogin("") if(!face.isLogin()) return null; //can't access application FacebookRestClient fbrclient = fb.getFacebookRestClient(); Id utilisateur: fbrclient.users_getLoggedInUser();

23 API java pour Facebook Récupérer le nom et status de l'utilisateur courant (un peu compliqué, mais bon…): //fill the list of users ArrayList user = new ArrayList (); //set of information required on users EnumSet fields = EnumSet.of(com.facebook.api.ProfileField.NAME, com.facebook.api.ProfileField.STATUS); users.add(fbrclient.users_getLoggedInUser()); Document d = fbrclient.users_getInfo(users, fields); String userName = d.getElementsByTagName( com.facebook.api.ProfileField.NAME.fi eldName ).item(0).getTextContent(); String userName = d.getElementsByTagName( com.facebook.api.ProfileField.NAME.fi eldName ).item(0).getTextContent();

24 API java pour Facebook Informations sur les amis: Document d = fbrclient.friends_get(); NodeList userIDNodes = d.getElementsByTagName("uid"); Collection friends = new ArrayList (); for (int i = 0; i < userIDNodes.getLength(); i++) { Node node = userIDNodes.item(i); Integer id = Integer.valueOf(node.getTextContent()); friends.add(id); } Document infos = fbrclient.users_getInfo(users, fields); //then we can iterate on the list of friends id and get the information for(Integer id : friends){ String fieldName = infos.getElementsByTagName(...).item(i).getTextContent(); //etc. }

25 And more… All google apps: http://code.google.com/morehttp://code.google.com/more –Open social http://code.google.com/apis/opensocial/http://code.google.com/apis/opensocial/ –Maps: http://code.google.com/apis/maps/http://code.google.com/apis/maps/ –Etc. Delicious: http://delicious.com/help/apihttp://delicious.com/help/api Digg: http://apidoc.digg.com/http://apidoc.digg.com/ Technorati: http://technorati.com/developers/api/http://technorati.com/developers/api/ And most of web 2.0 platforms propose access to their data through APIs!!!

26 It's your turn now !!! Build a search engine that search on different web 2.0 services and propose differents médias: Photos with flickr Video with youtube People and social features with facebook And whatever you want with web 2.0 APIs.


Download ppt "Api web 2.0. Representational state transfer REST is not a protocol or a format its a kind of architecture A service is accessed with its URI through."

Similar presentations


Ads by Google