Je conçois une API RESTful et confronté au problème de titre, reformulé pour plus de clarté:
Dois-je échouer rapidement si un client envoie un paramètre non reconnu? Par exemple,
http://example.com/api/foo?bar=true&paula=bean
Dans ce qui précède, bar
est un paramètre valide mais paula
n'est pas spécifié par l'API. Devrais-je
- Avertir le client de l'erreur
- Échec rapide
- Ignore ça
Si j'avertis le client, je ne peux émettre qu'un avertissement pour le premier paramètre, car il pourrait en envoyer un nombre presque infini, et le serveur a probablement de meilleures choses à faire. De même, en cas d'échec, il ne spécifierait que le premier paramètre non valide comme problème.
Je préfère l'échec à l'émission d'un avertissement pour forcer le programmeur à agir, car il pourrait sinon ignorer le problème et continuer à gaspiller des ressources, ou finir par se cultiver lui-même par inadvertance. Ne rien faire est encore pire à cet égard.
Mes arguments ont-ils un sens? Existe-t-il une pratique acceptée sur de telles choses?
la source
api/v1
etc., s'en occuperait, mais cela ne permet toujours pas les mises à jour incrémentielles. +1Réponses:
À mon avis, vous devez renvoyer un statut de demande non valide, afin que le client sache que ce qu'il essaie de faire n'est pas valide. Mon opinion à ce sujet est influencée par le concept selon lequel les API RESTful sont détectables . Si vous fournissez suffisamment d'informations à l'avance, le client n'essaie jamais de faire une demande non valide pour commencer. Si c'est le cas, alors il y a quelque chose de mal dans le code client et un échec rapide alertera le second sur ce bogue. Bien sûr, c'est une approche très puriste et peut ne pas être recommandée si votre API n'est pas détectable.
Une approche plus pragmatique peut être d'ignorer les paramètres invalides, mais dans tous les cas, assurez-vous de bien documenter le comportement.
la source
Si vous utilisez une API publique (ou une API qui sera utilisée par une autre équipe), je recommanderais une erreur de retour comme l'a suggéré @RubberDuck.
Si votre API ne sera consommée qu'à l'intérieur de votre équipe (ou uniquement par vous-même), il peut être plus facile d'ignorer les champs supplémentaires (par exemple, nécessite moins de code et plus facile à faire).
la source