Skip to content

v12.7

Choose a tag to compare

@JabX JabX released this 03 Dec 17:54
· 98 commits to master since this release

Refonte de coreFetch

coreFetch est désormais une instance de ky, qui est un wrapper autour du fetch natif du navigateur, et qui propose pas mal de fonctionnalités en plus, en particulier la gestion de hooks type beforeRequest ou beforeError.

Cela implique donc :

  • Que coreFetch a désormais une API compatible avec fetch (ce qui est un breaking change), au lieu d'une API custom, ce qui permet d'utiliser des générateurs de clients JS standard nativement avec Focus (la dernière version du générateur JS de TopModel peut donc aussi générer du fetch natif)
  • Que vous pouvez utiliser les hooks de ky pour configurer coreFetch avec votre authentification par exemple, au lieu de rewrapper la méthode et de devoir gérer tout à la main (en créant une nouvelle instance de coreFetch via coreFetch.extend())

Fonctionnellement, c'est identique, à part le fait que les requêtes en erreur (codes de réponse 4xx/5xx) renvoient désormais des HTTPError (c'est ky qui fait ça), et si elles sont interprétées par Focus, des HTTPDetailedError (qui étend HTTPError). HTTPDetailedError remplace l'objet HandledProblemDetails, qui n'était pas une erreur JS, et HTTPError remplace la réponse non traitée dans le cas où ce n'était pas interprétable.

Guide de migration :

  • Mettez à jour votre générateur d'API (si applicable) pour générer du fetch classique (attention, la nouvelle version du générateur TopModel utilise un import default pour fetch)
  • Transformez vos appels à coreFetch en appels fetch classiques, et n'hésitez pas à utiliser les fonctionnalités de ky pour simplifier les usages (en particulier le paramètre json dans les options pour passer le bon body, et la fonction json() directement exposée sur la promesse de retour pour éviter le double await).
  • Mettez à jour votre fetch custom pour utiliser extend() au lieu de le wrapper.

Vous pouvez voir un exemple de migration ici : klee-contrib/dfta-starter-kit@1c81c16