Download presentation
Presentation is loading. Please wait.
Published byJesus Andersen Modified over 11 years ago
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<rsp.blogs.blog.length; i++){ var blog = rsp.blogs.blog[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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.