Newer
Older
web-services / README.md

# Les web services TDM de l'Inist

## Contribuer

(...)

### Déclarer la documentation Swagger

Le répertoire `www-home` contient le HTML de la page d'accueil
<https://services.inist.fr>.

Si la racine de votre service répond une documentation respectant OpenAPI 3.0
(swagger), il vous suffit de la déclarer dans `www-home/index.html` pour qu'elle
soit prise en compte.

## Convention de nommage

Chaque instance sur l'[ezmaster](https://github.com/Inist-CNRS/ezmaster) de la
machine aura un nom en trois parties:

1. texte (domaine)
2. texte (spécialité)
3. numéro (version)

La troisième partie du champ ne doit pas être communiquée à l'extérieur, c'est
un numéro de version (si plusieurs instances ont les mêmes deux premiers champs,
c'est la dernière version qui est exposée quand on n'utilise pas de numéro de
version, ce qui sera le cas).

Le numéro de version permet la mise à jour de l'image docker associée au webservice.

### Nom de l'instance

Les champs textuels sont obligatoirement en minuscules, et sans accent (mais
peuvent contenir des chiffres) et donc de préférence en anglais. Ils ne doivent
pas contenir un nom de personne.

La première partie décrit le **domaine** d'application du webservice.
Exemple : `affiliation`, `text`, `classification`, `nlp`, etc.

La seconde partie décrit une **spécialité** du domaine.
Cette spécificité est principalement liée à une image docker différente, comme
c'est le cas, si les différents *web services* d'un domaine utilisent des
langages différents (C++, python, nodejs, etc.)

### Nom des répertoires

Chaque instance donne accès à une arborescence de webservices.
Le nom de route dépend du nom des répertoires.
Les noms des répertoires doivent donc être choisis dans cette optique.

Il convient donc de respecter les pratiques communément admises dans la définition d'API de type REST.
En utilisant des noms de répertoires en minuscules, sans accent (mais
pouvant contenir des chiffres) et de préférence en anglais.

Si le premier niveau caractérise obligatoirement la version, les suivants peuvent être adaptés selon le besoin.
On veillera à créer un répertoire si et seulement si il propose plusieurs sous-répertoire ou fichiers.

1. Version des APIs (v1, v2, v3, etc.)
2. Nom de l'algorithme ou de la ressource utilisés ou de la langue
3. Nom de l'action ou de l'algorithme caractérisant le traitement
4. (...)

Exemple :

- /v1/test/analyse
- /v2/istex/expand
- /v1/en/stemmer/analyse