Coder Social home page Coder Social logo

Normalisation json about linky HOT 4 CLOSED

bokub avatar bokub commented on June 8, 2024
Normalisation json

from linky.

Comments (4)

bokub avatar bokub commented on June 8, 2024

Salut Thierry,

Non, mon module ne va pas retourner un objet alors qu'une erreur s'est produite, ça n'a aucun sens.

En revanche, tu as raison sur le fait qu'il pourrait y avoir plus détails dans les erreurs.

On pourrait par exemple throw des erreurs custom qui ont un champ status et un champ data en plus du message existant.

Mon repo est ouvert aux pull request, je t'invite à en ouvrir une si tu le souhaites

P.S Tu peux utiliser la syntaxe markdown pour formater tes blocs de code et tes titres parce que là c'est difficilement lisible. Par exemple :

Exemple titre

Exemple de code

from linky.

terry3772 avatar terry3772 commented on June 8, 2024

Bonjour Boris,

Personnellement, ça ne me choque pas d'avoir une vision générique et considérer qu'une erreur est une donnée comme une autre avec champs status valorisé et un champs data vide.
Mais je comprends et respecte ta vision puriste.

Voila en fait, pourquoi je défends cette vision. Dans le cas de l'appel de ton module dans une boucle de programmation, il y a selon moi 2 types d'erreur :
-les fatales, qui méritent la sortie de la boucle
[cas du refresh token qui ne fonctionne pas]
-les mineures souvent temporaires, qui méritent de rester dans la boucle, et donc de relancer la requête (après la temporisation)
[cas connu ;-) de récupération trop tôt des données de la veille]

Mais on peut évidemment procéder autrement et ta solution "throw des erreurs custom qui ont un champ status et un champ data en plus du message existant" peut constituer un bon compromis 👍
Peux-tu juste me donner un exemple de syntaxe; je soumettrai une pull request après quelques jours de vacances...

Merci de l'échange et de la qualité de tes réponses.

from linky.

bokub avatar bokub commented on June 8, 2024

Effectivement, il y a 2 façons de voir les choses, tu as tout à fait raison.

Un bon parallèle serait la librairie axios par rapport l'API fetch de JavaScript, qui servent tous les deux à faire des requêtes HTTP.

  • fetch a pris le parti de n'envoyer une erreur que si la requête ne peut pas être faite. Si elle reçoit un code 500, elle ne throw rien du tout
  • axios, quant à lui, throw une erreur personnalisée du moment que le code de retour n'est pas 2XX.

Résultat: Beaucoup de développeurs galèrent avec fetch car il faut gérer plusieurs formats de réponse dans le cas nominal, et la gestion des erreurs est un vrai casse tête.

Je suis plutôt partisan de l'approche d'axios: si il y a une erreur, quelle qu'elle soit, je la catégorise comme une erreur.

Si toi, en tant qu'utilisateur de ma librairie, a envie de faire un traitement personnalisé en fonction des erreurs, libre à toi de catch cette erreur et de choisir quoi faire avec, mais ce n'est pas la responsabilité de la lib de déterminer si une erreur est "fatale" ou "mineure", cela dépend complètement de ton cas d'usage.

Par exemple, mon outil linky en ligne de commande n'a pas de notion de "fatale" ou "mineure", il s'arrête en cas d'erreur et affiche le problème, quelle que soit l'erreur
Le traitement serait différent si c'était un serveur domotique par exemple.

from linky.

bokub avatar bokub commented on June 8, 2024

Si tu veux créer une Erreur custom, tu peux suivre ce wiki par exemple, ou bien chercher sur Google quelque chose comme "extend Error typescript".

Tu pourras ensuite throw new MaCustomError avec des détails en plus

Bonne journée et merci à toi aussi pour l'échange !

from linky.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.