Séances 4 et 5 : API et manipulation de ressource§

&

Département Informatique, IUT Lyon 1

Creative Commons License

Ce travail est sous licence Creative Commons Attribution-ShareAlike 3.0 France.

1

Notion d’API Web§

2

Définition§

En programmation classique, on appelle API (Application Programming Interface) l’ensemble des classes et des fonctions que propose une bibliothèque, dédiée à la manipulation d’une certaine catégorie d’objets.

Une API Web est l’ensemble des requêtes HTTP que propose un serveur, permettant la manipulation des ressources de ce serveur.

3

Autres verbes§

4

PUT§

Ce verbe sert à envoyer un contenu à une ressource pour modifier son état. En général, le contenu du PUT correspond à une version modifiée du contenu retourné par un précédent GET.

5

DELETE§

Ce verbe sert à supprimer une ressource du serveur.

6

Votre travail§

7

Votre travail§

En vous appuyant sur la documentation de l’API du blog éphémère, vous devez écrire deux classes, permettant d’accéder à ce blog.

En d’autre terme, vous devez proposer une API Java qui donne accès à l’API Web du blog éphémère.

8

Classe Article§

public class Article {
    public Article(URL url) {}
    protected void refresh() {}
    protected void update() {}
    public URL getURL() {}
    public String getTitle() {}
    public String getBody() {}
    public String getDate() {}
    public void setTitle(String newTitle) {}
    public void setBody(String newBody) {}
    public void delete() {}
}
9

Classe Article§

10

Classe Blog§

public class Blog {
    public Blog(URL url) {}
    public URL getURL() {}
    public Iterable<Article> iterArticles() {}
    public Iterable<Article> iterArticles(String filtre) {}
    public Article createArticle(String title, String body) {}
}
11

Classe Blog§

12

Analyser du XML en Java§

URL url; // l'URL que vous venez de requêter
InputStream cxIs; // le flux contenant la réponse du serveur
javax.xml.parsers.DocumentBuilder db =
        javax.xml.parsers.DocumentBuilderFactory
                .newInstance().newDocumentBuilder();
org.w3c.dom.Document doc = db.parse(cxIs, url.toString());
org.w3c.dom.NodeList nl = doc.getDocumentElement().getChildNodes();
13

Sérialiser du XML en Java§

org.w3c.dom.Document doc; // le document à sérialiser
DOMImplementationLS domImplementation =
        (DOMImplementationLS) doc.getImplementation();
LSSerializer lsSerializer = domImplementation.createLSSerializer();
lsSerializer.getDomConfig()
        .setParameter("xml-declaration", Boolean.FALSE);
String xml = lsSerializer.writeToString(doc);
14

Pour aller plus loin§

15

Utilisation des etags§

Les etags (entity tags) permettent d’économiser de la bande passante, tout en garantissant que les données sont à jour.

L”etag est une chaîne de caractère associée à la ressource, qui change à chaque fois que la ressource est modifiée (une espèce de « numéro de série »).

Le serveur fournit l”etag de la ressource dans l’en-tête Etag. Lors de la première requêre GET qu’il fait à une ressource, le client mémorise cet etag.

16

Utilisation des etags§

Lors des requêtes GET suivantes, le client fournit l”etag dans l’en-tête If-None-Match.

NB: les etags participent, avec d’autres en-têtes, à la gestion des caches.

17