1 / 26

Api web 2.0

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 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 ;).

karik
Download Presentation

Api web 2.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 ;)

  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.setDoOutput(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 Notationhttp://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 flickrhttp://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/?method=method_name&param1=value1&param2=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=your_key

  9. Example of XML Response • URL API: http://api.flickr.com/services/rest/?method_name&param1=value1&param2=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=your_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/

  11. FlickrJ: API JAVAhttp://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: examplehttp://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("<img src='" + photo.getThumbnailUrl() + "' />"); }

  13. JSON and flickrhttp://api.flickr.com/services/rest/?method=method_name&format=json • URL API:Example: flickr.blogs.getList • XML response <blogs> <blog id="73" name="Bloxus" url="http://remote.bloxus.com/" /> <blog id="74" name="Manila" url="http://test1.userland.com/" /> </blogs> • 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. Youtubehttp://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 Youtubehttp://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 APIhttp://code.google.com/apis/ajaxsearch/documentation/ • Basis: // create a search controlvar searchControl = new google.search.SearchControl(null);// add in a full set of searcherssearchControl.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 APIhttp://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 APIhttp://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 nodevar node = result.html.cloneNode(true); // attach itvar savedResults = document.getElementById("saved_results");savedResults.appendChild(node); }

  20. Google maphttp://code.google.com/apis/ajaxsearch/ 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 • 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<Long> user = new ArrayList<Long>(); //set of information required on users EnumSet<ProfileField> 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.fieldName) .item(0).getTextContent(); String userName = d.getElementsByTagName(com.facebook.api.ProfileField.NAME.fieldName) .item(0).getTextContent();

  24. API java pour Facebook • Informations sur les amis: Document d = fbrclient.friends_get(); NodeList userIDNodes = d.getElementsByTagName("uid"); Collection<Integer> friends = new ArrayList<Integer>(); 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/more • Open social http://code.google.com/apis/opensocial/ • Maps: http://code.google.com/apis/maps/ • Etc. • Delicious: http://delicious.com/help/api • Digg: http://apidoc.digg.com/ • Technorati: 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.

More Related