Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

API: tester les types des paramètres entrés par l'user ?

+1 vote

J'écris une API qui sera utilisé par d'autres personnes.

Ma question est simple: est-ce que je dois tester (et si oui, dans quelle mesure) les paramètres passés aux fonctions de mon API par l'utilisateur ?

Exemple:

def moveObject(value: int):
    """"
    ....move my object
    """"

Ici, value doit être un int. Est-ce que dans cette fonction, je dois tester que l'utilisateur passe bien un int ? Et pas une string du genre "coucou" ? Je vais déjà avoir à tester cette value pour être sûr qu'elle soit dans une certaine plage, donc je me dis que si je dois tout tester à chaque fois, je vais pas m'en sortir.

Du coup je me demande, si l'utilisateur rentre un paramètre invalide, est-ce que j'essaie de l'arrêter tout de suite, ou est-ce que je lui fais confiance et j'attends que ça crashe dieu sait quand s'il fait une bêtise ?

demandé 13-Jan par Rififi (508 points)

1 Réponse

0 votes
 
Meilleure réponse

En fait, il n'y a pas de bonne réponse, car cela dépend fortement du type d'application.

Tu peux voir l'interface de ta fonction comme un contrat que tu passe avec l'utilisateur. Si la doc spécifie clairement le domaine des entrées, tu peux toujours te permettre de supposer que l'utilisateur va respecter les consignes, à ses risques et périls s'il ne le fait pas.

Apres, il faut mesurer l’écart entre le coût d'une telle vérification et son bénéfice (et c'est la que ça va souvent dépendre du type d'application). Si l'API que tu crées est orientée performance, par exemple, il pourrait être logique de vérifier un minimum, de choses. Si en revanche le suivi des erreurs est particulièrement important, ou que tu dois fournir certaines garanties indispensables, il faudra envisager de faire une vérification exhaustive des paramètres.

Bref, be smart.

répondu 14-Jan par yoch (2,272 points)
sélectionné 15-Jan par Rififi
...