Utilisation des jeux de données et les interfaces de programmation d’applications

 

Le gouvernement du Canada entend publier les données dans un format ouvert et permettre aux citoyens d'utiliser les données de façon fiable et conviviale en réduisant les obstacles à la saisie des données, en favorisant l'innovation et en éliminant les coûts inutiles pour les entreprises utilisatrices.

Les données sont présentées sous divers formats. Vous trouverez dans le présent document de l'information, des conseils et des suggestions sur la façon d'utiliser certains des formats présentés dans le Portail de données ouvertes ainsi que la façon de travailler avec des interfaces de programmation d'applications (API).  Pour obtenir de l'information de base sur la façon de travailler avec des données ouvertes, veuillez visiter notre page L'ABC des données ouvertes.

Données structurées

De manière générale, les données structurées sont des données textuelles présentées dans un format particulier qui facilite leur lisibilité par machine. Certains formats sont plus complexes, par exemple le format binaire utilisé pour les cartes et les fichiers de type SIG. Vous trouverez plusieurs formats différents dans le Portail de données ouvertes. Cette section aborde certains des formats courants et donne quelques conseils sur la façon de les utiliser.

Format CSV

Le moyen le plus facile de travailler avec un fichier CSV (Comma-Separated Values) est d'utiliser une application de tableur telle OpenOffice Calc ou Microsoft Excel. Il suffit de démarrer l'application et d'ouvrir le fichier .csv pour lancer l'assistant d'importation CSV.

Parcourir les jeux de données CSV

Codage de caractères

Un aspect important dont il faut tenir compte est le codage de caractères, qui peut avoir une incidence sur la façon dont les données, principalement le texte, sont analysées durant l'importation. Cette opération est particulièrement importante dans le cas des langues, tel le français, qui utilisent un jeu de caractères étendu.

OpenOffice permet de choisir facilement le codage à utiliser. Les figures 1 et 2 montrent un exemple de jeu de données CSV téléchargé qui a été codé avec un format différent du format par défaut UTF–8 d'OpenOffice (illustration avec NeoOffice).

Figure 1
Figure 1 : Exemple d'assistant d'importation CSV qui affiche un codage erroné

Description accessible de la Figure 1

Saisie d'écran montrant l'assistant d'importation de fichier CSV dans NeoOffice. Le fichier importé contient des caractères du jeu de caractères étendu français. L'utilisateur a choisi le jeu de caractères UTF-8 pour coder les caractères. La zone de prévisualisation affiche les caractères incorrectement; le format de codage utilisé n'est pas le format approprié pour ce fichier.

Figure 2
Figure 2 : Fichier CSV importé avec le mauvais format de codage de caractères

Description accessible de la Figure 2

Fichier CSV affiché dans l'éditeur du tableur NeoOffice. Le fichier contient des caractères du jeu de caractères étendu français qui n'ont pas été importés de manière appropriée en raison du mauvais format de codage utilisé.

Un autre format de codage de caractères à 8 bits utilisé au Canada est le format ISO–8859–1. Dans ce scénario, le choix de ce format permet de résoudre le problème du jeu de caractères étendu, tel qu'illustré dans les figures 3 et 4.

Figure 3
Figure 3 : Assistant d'importation CSV montrant le codage approprié de caractères

Description accessible de la Figure 3

Saisie d'écran montrant l'assistant d'importation de fichier CSV dans NeoOffice. Le fichier importé contient des caractères du jeu de caractères étendu français. L'utilisateur a choisi le bon format de codage ISO 8859-1 et la zone de prévisualisation affiche les caractères appropriés.

Figure 4
Figure 4 : Fichier CSV importé dans NeoOffice avec le codage de caractères approprié

Description accessible de la Figure 4

Fichier CSV affiché dans l'éditeur du tableur NeoOffice. Le fichier contient des caractères du jeu de caractères étendu français, qui ont été importés de manière appropriée avec le bon format de codage.

Vous remarquerez peut-être des problèmes de codage de caractères lorsque vous ouvrirez un fichier CSV dans Microsoft Excel, tel qu'illustré à la figure 5. Dans cet exemple, nous utilisons Microsoft Excel de la suite Microsoft Office Professional Plus 2010.

Figure 5
Figure 5 : Fichier ouvert dans Excel avec un format de codage de fichier erroné

Description accessible de la Figure 5

Saisie d'écran d'un fichier CSV ouvert dans Excel montrant des caractères français décodés incorrectement.

Il est possible de sélectionner manuellement un format de codage de caractères en utilisant l'assistant d'importation de données. Vous devez d'abord lancer le nouveau chiffrier Excel. Cliquez sur l'onglet Données puis sur À partir du texte pour lancer l'assistant d'importation (figure 6).

La première étape consiste à sélectionner dans l'assistant le codage de caractères approprié. Dans cet exemple, nous choisissons le format de codage UTF-8 situé au bas de la liste. Une fois que vous avez sélectionné le format, vous pouvez afficher le résultat du décodage des caractères dans le panneau de prévisualisation des données de l'assistant.

Figure 6
Figure 6 : Sélection du format de codage UTF-8 dans l'assistant d'importation de texte

Description accessible de la Figure 6

Saisie d'écran montrant l'étape 1 de 3 de l'assistant d'importation de texte dans Microsoft Excel. La liste des fichiers originaux est ouverte et indique la sélection du format Unicode UTF-8.

L'étape suivante (figure 7) permet de préciser le ou les délimiteurs appropriés utilisés dans le fichier de données. Encore une fois, le panneau de prévisualisation des données vous permet d'afficher vos données et de vérifier si elles ont été analysées correctement.

Figure 7
Figure 7 : Sélection des délimiteurs dans l'assistant d'importation de texte

Description accessible de la Figure 7

Saisie d'écran montrant l'étape 2 de 3 de l'assistant d'importation de texte dans Microsoft Excel. La case Virgule est cochée et le panneau de prévisualisation des données affiche les données séparées en colonnes.

Au choix, vous pouvez préciser les types de données pour chacune des colonnes (figure 8). Dans la plupart des cas, il suffit de cliquer sur Terminer.

Figure 8
Figure 8 : Sélection des formats de données dans l'assistant d'importation de texte

Description accessible de la Figure 8

Saisie d'écran montrant l'étape 3 de 3 de l'assistant d'importation de texte dans Excel. Cette étape comprend des paramètres qui permettent à l'utilisateur de définir les formats de données de chacune des colonnes. Dans cet exemple, nous utilisons les valeurs par défaut.

La figure 9 montre que les caractères ont été décodés de manière appropriée après que nous avons utilisé l'assistant d'importation de texte dans Excel.

Figure 9
Figure 9 : Données importées dans Excel avec le codage de caractères approprié

Description accessible de la Figure 9

Saisie d'écran montrant un fichier CSV importé dans Excel avec l'assistant d'importation de texte. Les caractères français s'affichent correctement après l'application du format de codage approprié.

Indicateur d'ordre des octets (Byte Order Mark - BOM)

Il peut vous arriver de découvrir un octet spécial particulièrement intéressant au début d'un fichier. Cet octet est l'octet BOM (Byte Order Mark). Il sert à indiquer la taille du codage de caractères utilisé dans un fichier codé au format UTF. Par exemple, le format UTF–16 produit la séquence U+FEFF ou þÿ (figure 5) dans un éditeur de texte capable d'afficher cette valeur. De manière générale, vous n'avez pas à vous soucier de la présence de cet octet dans l'application que vous utilisez. Toutefois, il peut s'avérer utile pour vous aider à choisir le bon codage de fichier durant une importation lorsque vous avez des problèmes.

Figure 10
Figure 10 : Octet « Byte Order Mark » dans un fichier de données

Description accessible de la Figure 10

Octet « Byte Order Mark » affiché dans un éditeur de texte.

Format JSON

Le format JavaScript Object Notation (JSON) est un format structuré de données ouvertes allégé et très bien adapté aux applications mobiles. Il est utilisé soit en mode natif, soit sous forme de bibliothèque offerte dans la plupart des langages de développement d'applications mobiles ou Web. Pour obtenir de l'information détaillée sur ce format, visitez le site Web officiel de JSON (anglais seulement). Voici un exemple simple de codage de données avec ce format :

"metadata":{
	"request":{
		"dateCreated":"2014-01-01T00:00:00+00:00",
		"name": "Exemple de données JSON" },
	"items":[
		{ "name":"Item 1", "colour":"rouge" },
		{ "name":"Item 2", "colour":"bleu" }
	]
}

Nous avons de nombreux exemples intéressants d'utilisation de données JSON et d'API RESTful dans différents langages de programmation.

Parcourir les jeux de données JSON

Format XML

Le format XML (eXtensible Markup Language) définit un ensemble de règles de codage de documents sous une forme lisible par machine. Les définitions peuvent être consultées à partir du site XML 1.0 Specification (anglais seulement).

Parcourir les jeux de données XML

Formats géospatiaux

GeoTIFF

Parcourir les jeux de données GeoTIFF

Les fichiers GeoTIFF sont similaires aux fichiers graphiques TIFF standard; ils sont consultables avec un visionneur d'images régulier qui traite le format TIFF. Toutefois, ces fichiers contiennent des métadonnées supplémentaires propres à la nature géographique des images. Visitez les sites officiels qui traitent de ce format pour obtenir davantage d'information :

Il existe une bibliothèque de source ouverte qui permet à vos programmes d'extraire de l'information de métadonnées d'un fichier GeoTIFF. L'exemple ci-dessous montre la façon d'installer et d'exécuter un programme C simple pour extraire de l'information sur les métadonnées.

Dans cet exemple, nous utilisons le produit Homebrew Package Manager sur OSX pour installer la bibliothèque GeoTIFF et exécuter un utilitaire pour lire ce type de fichier :

$ brew install libgeotiff 
$ listgeo <filename>.tif 

Une fois que vous avez installé la bibliothèque GeoTIFF, vous pouvez compiler un programme C simple pour lire les métadonnées :

/**
 * Exemple simple de programme C qui permet de lire les métadonnées d'un fichier GeoTIFF.
 *
 * NOTA : Il s'agit d'un exemple simple qui offre très peu de capacité de traitement des erreurs.
 *
 * @license http://data.gc.ca/fra/licence-du-gouvernement-ouvert-canada
 */
#include <stdio.h>
#include <stdlib.h>
#include <xtiffio.h>
#include <geotiffio.h>
#include <geokeys.h>

int main(void) {

    TIFF *tif  = (TIFF*)0; // Descripteur de niveau TIFF
    GTIF *gtif = (GTIF*)0; // Descripteur de niveau GeoKey
    double major_axis_key = 0;

    // Ouvrir le fichier TIFF
    tif = XTIFFOpen("geo.tif", "r");
    if (!tif) {
        printf("Impossible d'ouvrir le fichier GeoTIFF.\n");
        exit(-1);
    }

    // Ouvrir l'analyseur de clés GTIF; la lecture des clés s'effectue à ce moment-ci.
    gtif = GTIFNew(tif);
    if (!gtif) {
        printf("Impossible d'accéder aux métadonnées GTIF.\n");
        exit(-1);
     }
    
    // Lire une paire de clés GTIF.
    if (GTIFKeyGet(gtif, GeogSemiMajorAxisGeoKey, &major_axis_key, 0, 1)) {
        printf("GeogSemiMajorAxisGeoKey: %f\n", major_axis_key);
    } else {
        printf("Impossible de localiser GeogSemiMajorAxisGeoKey\n");
    }

    // Nettoyer et sortir.
    GTIFFree(gtif);
    XTIFFClose(tif);
    return 1;
}

Sortie :

$ ./geotiffmeta 
GeogSemiMajorAxisGeoKey: 6378137.000000 

Format Shapefiles

Parcourir les jeux de données Shapefiles

Les fichiers Shapefiles (SHP), développés par ESRI, sont des fichiers de données vectorielles de formes géospatiales très répandus et sont accompagnés d'une suite de fichiers nécessaires à leur utilisation. Tel qu'indiqué dans la liste sur Wikipédia, les fichiers suivants sont habituellement regroupés dans un fichier ZIP comprimé :

Fichiers obligatoires :

  • .shp — format du fichier Shapefiles; géométrie des formes elle-mêmes.
  • .shx — format de l'index du fichier Shapefiles; index positionnel de la géométrie des formes qui permet d'effectuer rapidement des recherches ascendantes et descendantes.
  • .dbf — format des attributs; attributs des colonnes pour chaque forme en format dBase IV.

Fichiers facultatifs :

  • .prj — format de projection; système de coordonnées et information de projection, fichier de texte clair qui décrit la projection en format WKT (Well-Known Text).
  • .sbn et .sbx — index spatial des caractéristiques.
  • .fbn et .fbx — index spatial des caractéristiques des fichiers Shapefiles utilisés en mode lecture seule.
  • .ain et .aih — index des attributs des champs actifs dans le tableau.
  • .ixs — index de géocodage des fichiers Shapefiles en mode lecture-écriture.
  • .mxs — index de géocodage des fichiers Shapefiles en mode lecture-écriture (format ODB).
  • .atx — index des attributs des fichiers .dbf sous la forme shapefile.columnname.atx (ArcGIS 8 et versions plus récentes).
  • .shp.xml — métadonnées géospatiales en format XML, tel le schéma ISO 19115 ou autre schéma XML.
  • .cpg — permet de préciser la page de codes (fichiers .dbf seulement) et d'identifier le codage de caractères à utiliser.

Source : Shapefile - Wikipedia.org

Liens vers des outils utiles :

Conversion des fichiers Shapefiles en fichiers GeoJSON

Consultez l'excellente description de Ben Balter sur la conversion des fichiers Shapefiles en fichiers GeoJSON (anglais seulement) avec l'utilitaire ogr2ogr de GDAL :

ogr2ogr -f GeoJSON -t_srs crs:84 [name].geojson [name].shp 

Interfaces de programmation d'applications

 

Qu'est-ce qu'une API?

Le terme interface de programmation d'applications (API) est un terme générique. Dans le contexte du Portail de données du gouvernement du Canada, ce terme désigne les interfaces logicielles connectées à Internet qui permettent d'accéder aux données ouvertes. Dans la majorité des cas, ces interfaces utilisent le protoc9ole HTTP. Les API permettent d'accéder sur demande à de grandes quantités de données ponctuelles ou complexes de sources multiples que les développeurs peuvent regrouper et pour lesquelles ils peuvent développer des applications ou des visualisations permettant de créer de nouvelles vues d'information.

Pour obtenir de plus amples renseignements sur la façon d'utiliser ou de créer une API, veuillez visionner les vidéos suivantes :

API du gouvernement ouvert

Le gouvernement du Canada s'emploie à diffuser des API qui permettront :

  • de créer des débouchés économiques ou de favoriser l'innovation dans les secteurs public ou privé;
  • de faire le lien avec les données fréquemment demandées par les Canadiens (par courriel et au moyen des jeux de données proposés, de tables rondes, de consultations et de demandes d'AI);
  • d'améliorer la responsabilisation et de mieux répondre aux besoins;
  • de faire mieux connaître au public le gouvernement du Canada et ses activités;
  • de faciliter la mission fondamentale des ministères et organismes; et
  • d'éclairer les questions touchant les étudiants et les jeunes (p. ex., les données sur les prêts d'études canadiens).

Vous pouvez accéder au registre des jeux de données à partir de donnees.gc.ca, au moyen de notre API.

Connexion à une API

De manière générale, les API s'adressent aux développeurs. Cette section donne des exemples dans lesquels on utilise différents outils et langages de programmation. Si vous ne possédez aucune expérience de la programmation, vous pouvez consulter le Portail de données ouvertes pour accéder aux jeux de données.

Utilisation de la commande cURL

La commande cURL est un outil que l'on utilise sur la ligne de commande pour transférer des données en provenance ou à destination d'un serveur avec différents protoc9oles TCP/IP. Dans ce cas-ci, nous examinons la façon d'utiliser cette commande pour demander des données à une API HTTP RESTful. La commande peut être installée dans des plates-formes Windows, OSX ou Linux.

Windows

OSX

Linux

  • Utiliser un gestionnaire de produit, tel YUM ou APT-GET, ou l'installateur de progiciel de l'interface graphique ou
  • Télécharger cURL (anglais seulement).

Une fois la commande cURL installée, vous pouvez y accéder sur la ligne de commande en tapant simplement curl. Cette opération ne produit aucun résultat et permet uniquement de confirmer l'installation de la commande. Vous devez préciser, au minimum, l'URL de destination.

Il y a des API qui demandent certains paramètres, y compris les en-têtes HTTP. Pour réussir à communiquer avec certains API, vous devez également entrer des paramètres, y compris les en-têtes HTTP. Dans notre exemple, l'API permet de définir les en-têtes Accept et Accept-Language.

curl -H "Accept: application/json" -H "Accept-Language: en" \
	"http://www.earthquakescanada.nrcan.gc.ca/api/v2/locations/" > data-raw.json

Par défaut, la commande cURL affiche sur l'écran de la console (STDOUT) la réponse en provenance de la destination. Dans l'exemple ci-dessus, la sortie est redirigée vers un fichier nommé data-raw.json qui contient le jeu de données anglais en format JSON.

Figure 1
Figure 1 - Réponse brute en format JSON

Description accessible de la Figure 1

Saisie d'écran d'un fichier de réponse JSON en format brut minifié.

Dans la plupart des cas, la réponse est optimisée (minifiée) afin de réduire la taille du transfert de fichier (Figure 6). Vous pouvez utiliser un autre outil de ligne de commande, tel jsonpp (anglais seulement), pour formater les données en une sortie lisible par un humain (figure 7).

Figure 2
Figure 2 - Réponse JSON formatée en mode « pretty print »

Description accessible de la Figure 2

Saisie d'écran d'un fichier de réponse JSON formaté en mode « pretty print » aux fins de lisibilité par un humain.

Utilisation des plugiciels de navigateur

La majorité des navigateurs offrent des plugiciels, outils utilisés pour interagir avec les API RESTful. Ces outils permettent de configurer les paramètres et les en-têtes, de récupérer une réponse et de visualiser les données. Ils peuvent être très utiles pour explorer rapidement les données d'API. Effectuez une recherche dans le répertoire de plugiciels de votre navigateur pour connaître ceux que vous pouvez utiliser.

Utilisation des langages de programmation

La majorité des langages de programmation modernes ont la capacité d'accéder aux ressources réseau, tels les services HTTP, soit en mode natif, ou par l'entremise de bibliothèques. Nous aborderons quelques exemples simples sur la façon de commencer à utiliser certains langages courants utilisés pour développer des applications Web et mobiles permettant d'accéder à une API RESTful.

Les programmes donnés en exemple ci-dessous illustrent la façon d'interroger une API et d'analyser la réponse JSON. La réponse est analysée pour afficher le nom du résultat et être répétée dans un des groupes de résultats.

PHP

L'exemple PHP suivant utilise la commande cURL :

<?php
/**
 * Exemple simple de script PHP utilisé pour interroger une API.
 *
 * @license http://data.gc.ca/fra/licence-du-gouvernement-ouvert-canada
 */

// Demander l'URL
$url = 'http://www.earthquakescanada.nrcan.gc.ca/api/earthquakes/';

// Request HTTP headers
$headers = array(
    'Accept: application/json',
    'Accept-Language: en'
);

// Configurer les options cURL 
curl_setopt($cu, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($cu, CURLOPT_HTTPHEADER, $headers);

// Exécuter la demande cURL
$response = curl_exec($cu);

// Fermer l'objet cURL de manière appropriée
curl_close($cu);

// Afficher les données de réponse
if ($response) {
    $json = json_decode($response);
    echo "{$json->metadata->request->name->en}\n";
    foreach($json->latest as $key=>$value) {
        echo "{$key} -> {$value}\n";
    } 
}

Sortie :

Earthquake listings available 
7d -> /api/v2/locations/7d.json 
30d -> /api/v2/locations/30d.json 
365d -> /api/v2/locations/365d.json 

Python

L'analyseur Python requiert les deux bibliothèques (json et requests) utilisées dans l'exemple qui suit :

#!/usr/local/bin/python
# coding=utf-8
"""
 Exemple simple de script Python utilisé pour interroger une API.

 @license: http://data.gc.ca/fra/licence-du-gouvernement-ouvert-canada
"""
import json
import requests

url      = 'http://www.earthquakescanada.nrcan.gc.ca/api/earthquakes/'
options  = { "Accept":"application/json", "Accept-Language":"en" }
response = requests.get(url, headers=options)
jdata    = response.json()

print jdata['metadata']['request']['name']['en']

for (key, value) in jdata['latest'].items():
    print key, "->", value

Sortie :

Earthquake listings available 
365d -> /api/v2/locations/365d.json 
7d -> /api/v2/locations/7d.json 
30d -> /api/v2/locations/30d.json 

Bibliothèque jQuery pour JavaScript

L'exécution de JavaScript dans un navigateur est assujettie à des restrictions concernant la sécurité des connexions à des sites Web tiers. Par défaut, les navigateurs interdisent les interrogations à distance, qu'ils considèrent être des scripts entre sites (Cross-Site Scripting (XSS)). Ces interrogations sont autorisées lorsque la réponse de l'API contient un en-tête HTTP Access-Control-Allow-Origin approprié qui permet les interrogations externes. Dans l'exemple qui suit, une connexion d'API est effectuée avec la bibliothèque jQuery (anglais seulement).

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Démonstration d'un appel d'API avec jQuery</title>
</head>
<body>

<div id="short"></div>
---
<div id="long"></div>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
/**
 * Exemple simple de script jQuery JavaScript utilisée pour interroger une API.
 *	
 * @license http://data.gc.ca/fra/licence-du-gouvernement-ouvert-canada
 */
(function( $ ) {
    $(document).ready(function() {

        // Méthode abrégée
        $.getJSON('http://www.earthquakescanada.nrcan.gc.ca/api/earthquakes/', 
            function(json) {
                $('#short').append(json.metadata.request.name.en + '<br />');
                $.each(json.latest, function(idx, item) {
                    $('#short').append(idx + ' -> ' + item + '<br />');
                });
                return;
            }
        );

        // Méthode étendue
        $.ajax({
            url: 'http://www.earthquakescanada.nrcan.gc.ca/api/earthquakes/',
            dataType: 'json',
            headers: { 
                'Accept'          : 'application/json', 
                'Accept-Language' : 'fr' 
            },
            crossDomain: true,
            type: 'GET',
            success: function(json) {                        
                $('#long').append(json.metadata.request.name.fr + '<br />');
                $.each(json.latest, function(idx, item) {
                    $('#long').append(idx + ' -> ' + item + '<br />');
                });
                return;
            },
            error: function(req, status, error) {
                $('#long').append(
                    status.toString() + ': ' + 
                    error.toString()
                );
                return;
            },
        });
    });
})( jQuery );
</script>
</body>
</html>

Sortie :

Earthquake listings available 
7d -> /api/v2/locations/latest/7d.json 
30d -> /api/v2/locations/latest/30d.json 
365d -> /api/v2/locations/latest/365d.json 
--- 
Annonces de séismes disponibles 
7d -> /api/v2/locations/latest/7d.json 
30d -> /api/v2/locations/latest/30d.json 
365d -> /api/v2/locations/latest/365d.json 

Java

Plusieurs bibliothèques de tiers pour Java SE facilitent le travail avec les données JSON. Dans l'exemple qui suit, nous utilisons la bibliothèque JSON.org (anglais seulement), également accessible par l'entremise de Maven (anglais seulement).

package com.tbs.devcorner.simple;
/**
 * Exemple simple de programme Java utilisé pour interroger une API.
 * @license http://data.gc.ca/fra/licence-du-gouvernement-ouvert-canada
 *
 * Énoncé Dependency de Maven :
 *   <dependency>
 *     <groupId>org.json</groupId>
 *     <artifactId>json</artifactId>
 *     <version>20131018</version>
 *   </dependency>
 */
import java.io.*;
import java.net.*;
import org.json.*;

public class App 
{
    public static void main( String[] args )
    {
        try {
            // Créer la connexion
            URL api_url = new URL("http://www.earthquakescanada.nrcan.gc.ca/api/earthquakes/");
            URLConnection api = api_url.openConnection();

            // Définir les en-têtes HTTP
            api.setRequestProperty("Accept", "application/json");
            api.setRequestProperty("Accept-Language", "en");

            // Obtenir la réponse
            JSONTokener tokener = new JSONTokener(api.getInputStream());
            JSONObject jsondata = new JSONObject(tokener);

            // Afficher le nom de l'API
            System.out.println(jsondata.getJSONObject("metadata")
                                       .getJSONObject("request")
                                       .getJSONObject("name")
                                       .get("en").toString());

            // Répéter l'opération sur les liens les plus récents
            JSONObject latest = jsondata.getJSONObject("latest");
            for (Object item : latest.keySet()) {
                System.out.println(item.toString() + " -> " + latest.get(item.toString()));
            }

        } catch (MalformedURLException e) {
            System.out.println("URL mal formée");
        } catch (IOException e) {
            System.out.println("Erreur d'E/S");
        }
    }
}

Sortie :

Earthquake listings available 
7d -> /api/v2/locations/7d.json 
30d -> /api/v2/locations/30d.json 
365d -> /api/v2/locations/365d.json

Pratiques exemplaires

Mise en antémémoire des données

La mise en antémémoire est un sujet vaste et peut s'appliquer aux couches mémoire, stoc9kage ou communication des deux côtés d'un client/serveur. Dans ce contexte, le côté serveur désigne la source de données, et le côté client, le développeur ou l'utilisateur qui tente de télécharger les données.

Mise en antémémoire des sources de données

Certaines sources de données peuvent utiliser la mise en antémémoire pour favoriser l'extensibilité. Comme mentionné précédemment, la mise en antémémoire peut être effectuée à différents niveaux du service. Bien que cette opération soit transparente pour les utilisateurs finaux, il est important de comprendre ces pratiques pour interagir efficacement et en toute conformité avec la source de données.

Si les réponses à vos demandes de renseignements font toujours référence aux mêmes jeux de données alors que vous vous attendez à obtenir des références à de nouveaux jeux ou des jeux mis à jour, assurez-vous de ce qui suit :

  • Vous avez vérifié que votre environnement ou vos outils ne produisent aucune mise en antémémoire.
  • Vous êtes en droit de vous attendre à ce que la source de données produise une réponse différente à vos demandes.
  • Vous avez vérifié dans la documentation de la source de données s'il y avait de l'information sur l'horodatage ou sur les règles de mise en antémémoire des réponses.
  • Vous avez tenté de modifier votre demande pour vérifier si la réponse demeurait la même.
  • Vous avez attendu quelques minutes avant de représenter votre demande pour vérifier si les données étaient actualisées après un certain délai.

Dans certains cas, la source de données peut utiliser un réseau de publication de contenu (Content Delivery Network – CDN) pour mettre en antémémoire les réponses fréquentes. Vérifiez les en-têtes HTTP pour déceler toute indication de la présence d'un tel réseau ou de l'utilisation de tout autre mécanisme de mise en antémémoire.

Mise en antémémoire côté client (application)

Vous pouvez identifier dans votre application des possibilités d'optimisation qui permettent la mise en antémémoire partielle ou totale des données. La mise en antémémoire peut accroître considérablement le rendement de votre application et améliorer de manière significative les expériences des utilisateurs. Évidemment, la mise en antémémoire du côté client exige un certain équilibre entre le rendement de l'application et l'exactitude des réponses puisque cette pratique peut rapidement devenir désuète.

Traitement des erreurs

Pour les jeux de données et les API, il est généralement important de reconnaître les codes de réponse HTTP et de réagir de manière appropriée. Voici un sommaire de certains codes de réponse HTTP (anglais seulement) que vous pouvez constater :

Codes de réponse HTTP
Code Sommaire Explication
200 OK Interrogation réussie
301 Moved Permanently L'élément demandé se trouve maintenant dans le nouvel emplacement suivant :
304 Not Modified L'élément demandé n'a pas été modifié depuis votre dernière demande.
404 Not Found Aucune information trouvée à l'URL demandée.
40x Client Errors Différentes erreurs liées à votre demande.
50x Server Errors Différentes erreurs liées au côté serveur. Il est préférable d'examiner votre demande et de la présenter de nouveau ultérieurement.
Courriels sur le gouvernement ouvert

Courriels sur le Gouvernement ouvert

Inscrivez-vous pour recevoir des courriels sur le Gouvernement ouvert et être parmi les premiers à entendre parler de nouveaux ensembles de données, de nouvelles sources d'information, les consultations à venir, et les blogs actuels.

Rapport d’auto-évaluation à mi-parcours du Plan d’action pour un gouvernement ouvert 2014-2016

Prenez connaissance de nos progrès sur le Plan d’action pour un gouvernement ouvert.

Carte du Canada

Gouvernement ouvert dans tout le Canada

Explorez les programmes et les événements liés au gouvernement ouvert dans tout le pays, recueillez des renseignements et des outils aidant à établir son propre portail, de même que la mise en œuvre de la licence de gouvernement ouvert au sein de votre administration.

Date de modification :