Retour : page principale > sommaire eFlore v5 > eFlore API v0.1

Description générale du fonctionnement de l'api eFlore v0.1

Format de base des URLs des services
Afin que l'ensemble des services des différents projets soit interopérables la version de l'api sera définie pour l'ensemble des projets. L'URL de base des services sera la suivante : http://api.tela-botanica.org/service:eflore:0.1/#projet/#ressources
Cette URL sera composée :
  • "projet" (=code_projet) [obligatoire] : prĂ©ciser le code du projet concernĂ© par le service.
  • "ressources" : le nom de la ressource demandĂ© (correspond au nom du fichier du service).

Cette URL pointera en réalité, dans un dossier :
  • /www/eflore/projets/services/#version_api/#code_projet/#nom_du_service.php



Méthodes et codes de retour
Par défaut, cette API sera accessible seulement en consultation. C'est donc la méthode HTTP GET qui sera utilisée pour y accéder.
Cette API devrait donc seulement retourner des réponses HTTP ayant pour code :
  • 200 "OK" : requĂŞte traitĂ©e avec succès. Par dĂ©faut, ce code sera retournĂ© avec la rĂ©ponse.
  • 301 "Moved Permanently" : document dĂ©placĂ© de façon permanente. Ă€ utiliser quand on sait qu'une ressource a Ă©tĂ© supprimĂ©e et que l'on connait la ressource qui la remplace. L'adresse de la nouvelle ressource devrait ĂŞtre indiquĂ©e.
  • 400 "Bad Request" : la syntaxe de la requĂŞte est erronĂ©e. Ă€ utiliser quand les paramètres passĂ©s dans la requĂŞte sont contradictoires et qu'il est impossible de dĂ©terminer prĂ©cisĂ©ment la ressource demandĂ©e par le client.
  • 404 "Not Found" : document non trouvĂ©. Ă€ utiliser quand la ressource demandĂ©e est introuvable. Par exemple, l'identifiant passĂ© dans l'URL n'existe pas dans la base de donnĂ©e.
  • 410 "Gone" : la ressource est indisponible et aucune adresse de redirection nÂ’est connue. Ă€ utiliser quand on sait qu'une ressource a Ă©tĂ© supprimĂ©e et qu'il n'y a pas de nouvelle ressource correspondante.
  • 500 "Internal Server Error" : erreur interne du serveur. Une erreur de programmation du service devrait retourner ce type de code.
  • 501 "Not Implemented" : fonctionnalitĂ© rĂ©clamĂ©e non supportĂ©e par le serveur. Ă€ utiliser quand un client demande un service non disponible.
  • 503 "Service Unavailable" : service temporairement indisponible ou en maintenance. Ce code devrait ĂŞtre renvoyer en cas de travaux de maintenance, migration... de l'API.

Règles générales
  • Pour l'ensemble des ressources, le paramètre "retour.format" pourra ĂŞtre indiquĂ© dans l'url. Il permettra de limiter les rĂ©sultats aux seules informations disponibles dans la table sans recherche d'information complĂ©mentaire (valeur : min). Par exemple, pour un nom seuls les identifiants des noms liĂ©s seront fournis mais en aucun cas l'intitulĂ© de ces noms.
  • Pour les champs comportant des codes (suffixe ".code"), ils auront le format : code_projet.code_valeur ou code_projet.code_categorie:code_valeur. Ex. : ISO-3166-1.fr ou eflore.GN:MS (interwiki inconnu). Les champs code servent Ă  rĂ©fĂ©rencer des infos provenant de projets exterieurs au projet courant. Pour rĂ©fĂ©rencer des valeurs interne au projet, utiliser le suffixe ".id".
  • Pour chaque champ avec un code, une url vers la ressource fournissant des infos supplĂ©mentaires sera fournie. Le nom du champ sera suffixĂ© par href. Ex. : basionyme.href
  • Pour chaque champ avec un code, le champ sans suffixe contiendra la valeur correspondant au code. Ex. :
    • zone_geo = "France"
    • zone_geo.code = "ISO-3166-1.fr"
    • zone_geo.href = "api.tela-botanica.org/service:eflore:0.1/iso-3166-1/zones-geo/fr"
  • Les champs nommĂ©s "id", prĂ©fixĂ© par "id_" ou suffixĂ© par ".id" font rĂ©fĂ©rence Ă  des valeurs internes au projet courant.
  • Si un champ ne contient pas de donnĂ©es, il ne sera pas affichĂ© dans les rĂ©sultats du service (cela Ă©vite de transfĂ©rer des octets inutiles).
  • Si un champ peut contenir plusieurs donnĂ©es, utiliser un tableau d'objet comme valeur.
  • Pour le paramètre retour.champs :
    • champ.id renvoie l'identifiant ou le code : "1/num_nom_retenu.id" => nom_retenu.id: "71574"
    • champ.href renvoie l'url vers la ressource : "1/rang.href" => rang.href: http:/tela-botanica.org/service:eflore:0.1/bdnt/ontologie/rang.code:290
    • champ.* renvoie tous les suffixes existant : "74979/nom_sci.*" => nom_sci.genre: "Asplenium" et nom_sci.epithete_sp: "fontanum"
    • champ renvoie l'intitulĂ© du code ou de l'id : "74979/rang" => rang: "espèce"
  • Principe pour passer plusieurs identifiant des les urls dans les paramètres ou les ressources :
    • codeProjet1.codeId:#id1,#id2,#id3...;codeProjet2.codeId:#id1,#id2,#id3...;...
    • Exemple : bdtfx.nt:1,2,3;bdtxa.nn:1,2,3

Types de service
Deux grands types de service existent :
  • recherche : service permettant de rĂ©aliser une recherche ou de naviguer dans les fiches
  • dĂ©tail : service fournissant le dĂ©tail d'une fiche

Descriptions des paramètres communs aux différentes ressources
Ces paramètres sont optionnels et sont passés après le signe "?" dans l'URL.

Spécifiques au service de type recherche :
  • masque : filtre la liste en fonction d'un masque de recherche portant sur un libellĂ© ou un nom.
  • masque.* : chaque ressource peut dĂ©finir une sĂ©rie de sous masque de recherche spĂ©cifique.
  • recherche (=stricte|etendue|floue) : type de recherche Ă  lancer (pour l'instant, uniquement sur le masque par dĂ©faut) :
    • stricte : le masque est passĂ© tel quel Ă  l'opĂ©rateur LIKE. L'utilisateur a donc la possibilitĂ© d'utiliser le joker «%» pour remplacer n'importe quel nombre de caractères, y compris aucun et le «_» pour remplacer exactement un caractère.
    • etendue : ajout automatique du signe % Ă  la place des espaces et en fin de masque avec utilisation de l'opĂ©rateur LIKE. Ex. : si le masque vaut "Ace mons", la recherche sera lancĂ©e sur "Ace%mons%".
    • floue : recherche tolĂ©rante vis-Ă -vis d'approximations ou d'erreurs (fautes d'orthographe par exemple). Utilisation de SOUNDEX. Ex. : je tape "Acre", le service retournera "Acer" ou si je tape "Acer monspesulanum" le service retournera "Acer monspessulanum".
  • navigation : permet en utilisant les sous-masques ci-dessous de naviguer dans les rĂ©sultats.
    • navigation.depart : indique la ligne de rĂ©sultat oĂą dĂ©buter l'affichage des rĂ©sultats. Par dĂ©faut vaut 0.
    • navigation.limite : indique le nombre de lignes de rĂ©sultats Ă  retourner. Par dĂ©faut vaut 100.

Communs au deux types de service :
  • retour (=application/json|image/jpeg) : indique le type MIME des donnĂ©es Ă  retourner.
    • application/json (par dĂ©faut) : format JSON renvoyĂ© par dĂ©faut.
    • image/jpeg : format binaire JPEG image/jpeg
  • retour.format indique le format de retour.
    • retour=application/json : (=max|min|oss|perso) :
      • max (par dĂ©faut) : un objet JSON contenant toutes les informations (mĂŞme les intitulĂ©s des donnĂ©es liĂ©es).
      • min : pour obtenir seulement les infos de la table (les intitulĂ©s des infos liĂ©es doivent ĂŞtre obtenue via les href).
      • oss : format d'Open Search Suggest disponible uniquement pour les ressources Noms et Taxons.
      • perso : permet d'indiquer Ă  l'aide du paramètre retour.champs les champs Ă  retourner dans la rĂ©ponse. Si le paramètre retour.champs est utilisĂ©, la valeur pour retour.format sera automatiquement mise Ă  perso.
    • retour=image/jpeg (=predefini|largeur*hauteur|maximum)
      • predefini : image de taille dĂ©fini :  X3S Ă  X3L
      • largeur*hauteur : largeur * hauteur en pixel : ex 800*600
      • maximum : nombre de pixels maximum en largeur ou hauteur en fonction de si l'image est en format portrait ou paysage : 800
  • retour.langue (=*|orig|code ISO-639-1.alpha-2) : indique la langue dans laquelle on veut rĂ©cupĂ©rer les donnĂ©es de la ressource. Si les donnĂ©es ne sont pas disponibles dans la langue souhaitĂ©e, les donnĂ©es dans la langue par dĂ©faut seront malgrĂ© tout retournĂ©es.
    • * : retourne l'ensemble des donnĂ©es dans les diffĂ©rentes langues disponibles.
    • orig : renvoie les donnĂ©es dans la langue d'origine ou officielle. Utile pour les ressources ZonesGeo et Langues.
    • code ISO-639-1.alpha-2 : indique le code ISO-3166-1.alpha-2 de la langue dans laquelle on souhaite recevoir les donnĂ©es. Par dĂ©faut, si la langue n'est pas indiquĂ©e, ce paramètre prendra la valeur ISO-3166-1.alpha-2 fr.
  • retour.champs (=champ1,champ2,...) : liste de noms de champs sĂ©parĂ©s par des virgules Ă  faire figurer dans les rĂ©sultats. Dans le cadre d'une recherche, indique les champs Ă  ajouter. Dans le cadre d'un id, indique les champs Ă  afficher.
  • version : permet d'indiquer avec les sous-masques ci-dessous une version prĂ©cise de l'api ou du projet. Par dĂ©faut, les dernières versions sont utilisĂ©es.
    • version.projet (=*|[code_version]|+) [optionnel] : indique si l'on veut les donnĂ©es pour un projet de toutes les versions (=*), d'une version prĂ©cise (=[code_version]) ou de la version la plus rĂ©cente (=+). Par dĂ©faut, les donnĂ©es de la version la plus rĂ©cente sont renvoyĂ©es. Si aucune donnĂ©e n'est disponible, une erreur HTTP 404 sera retournĂ©e avec un contenu vide.
    • version.api (=[code_version]|+) [optionnel] : numĂ©ro de version de l'API d'eFlore. Pour l'instant, prendra seulement la valeur : "0.1".