Bonjour,

J'ai lu pas mal de documentation sur la création d'API REST mais il y a pas mal d'auteurs qui se contredisent.
J'aimerai donc des clarifications sur les bonnes pratiques à utiliser.


##############################
Méthode HTTP : certaines personnes disent que pour envoyer des données, il faut utiliser uniquement des POST alors que d'autres préconisent d'utiliser POST (pour la création), PUT (pour la modification), DELETE (pour la supression)
=> qu'elle est la meilleure méthode ? on peut toutes les utiliser ? pourquoi ?


##############################
Structure de l'URL, j'ai vu plusieurs méthodes pour envoyer des commandes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
// {ids} = liste des id des ressources (utilisation du séparateur ",")
POST api/<ressources>/{ids}/<ressources_enfants>/{ids}/action?key1=value1&key2=value2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
// {ids} = liste des id des ressources (utilisation du séparateur ",")
POST api/<ressources>/{ids}/<ressources_enfants>/{ids}/action 

Envoie des paramètres en x-www-form-url-encoded
key1=value1&key2=value2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
// {ids} = liste des id des ressources (utilisation du séparateur ",")
POST api/<ressources>/{ids}/<ressources_enfants>/{ids}/action 

Envoie des paramètres en form-data
key1=value1&key2=value2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
// {ids} = liste des id des ressources (utilisation du séparateur ",")
POST api/<ressources>/{ids}/<ressources_enfants>/{ids}/action 

// Envoie des paramètres en JSON
{
  key1 : value1,
  key2 : value2
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
// {ids} = liste des id des ressources (utilisation du séparateur ",")
// {action} = POST/PUT/DELETE selon l'action désirée
{action} api/<ressources>/{ids}/<ressources_enfants>/{ids}

// Envoie des paramètres en JSON
{
  key1 : value1,
  key2 : value2
}

// Mais comment gérer si  on veut faire des actions spécifiques ?
Est-ce qu'il y a des méthode à proscrire ? laquelle est la meilleure (la plus simple d'utilisaiton pour l'utilisateur) ? pourquoi ?


##############################
Pour les informations retournées par le serveur, certaines personnes renvoie un objet JSON contenant le message d'erreur avec le code d'erreur dans le header HTTP alors que d'autre renvoie un objet JSON contenant le code d'erreur et le message.
=> les deux pratiques sont viables ? laquelle est la meilleure ? pourquoi ?


Merci d'avance