Bonjour,
Aujourd’hui j’aurais besoin d’un petit coup de main pour mieux comprendre ce qu’API Platform peut réaliser comme requêtes par défaut. Au final, je cherche la méthode la plus efficace en termes de ressources requises pour l’affichage final pour l’utilisateur :
- plein de petites requêtes simples ?
- une grosse requête très complexe ?
- une grosse requête très simple et le tri fait par JS chez l’utilisateur ?
J’ai en BDD une série de données-bidon et je fais des tests avec API Platform et Symfony 5 pour les récupérer comme je le souhaite.
Notamment :
- récupérer la liste des entités dispo entre deux dates
- récupérer en plus les entités toujours dispo (boolean)
- récupérer les entités qui ont tel ou tel tag (mais pas tel ET tel tag )
Je peux sans souci faire 3 requêtes, les 3 fonctionnent. Je peux ensuite merger les 3 tableaux de résultats.
Mais est-ce efficace ? Ne vaudrait-il pas mieux faire une seule requête ramenant toutes les entités (sans filtres) et laisser le front-end en javascript se charger de trier les données ? Comment savoir ce qui est le mieux pour l’utilisateur ? Je précise qu’on parle d’une BDD qui au final ne devrait pas gérer nettement plus de 200 entités simultanément (mais avec beaucoup de dates liées en Collection).
Revenons sur les requêtes avec API Platform : je n’arrive pas à comprendre clairement quand est-ce que les filtres se cumulent, et quand est-ce qu’ils s’excluent. Par exemple :
-
une requête
http://localhost:8000/api/stores?openingHours.day[after]=2021-02-14&openingHours.day[before]=2021-02-20&isAlwaysOpened=true
ne ramène aucun résultat. Si j’enlève la partie "isAlwaysOpened", j’ai bien une liste cohérente. Mais ça me simplifierait beaucoup la vie si il y avait moyen de dire : donne moi la liste "des stores ouverts entre telle date et telle date ET ceux ouverts tout le temps". -
une requête
http://localhost:8000/api/stores?categories[]=/api/categories/2&categories[]=/api/categories/3
me renvoie par contre la liste des stores ayant la catégorie 2 et celle des stores ayant la catégorie 3, alors qu’au contraire j’aurais aimé avoir la liste des stores qui ont les 2 catégories.
Le truc c’est que je ne perçois pas la différence avec la première requête et son "&isAlwaysOpened=true", or les deux ont le comportement inverse de celui que j’espérais ! Et vu que je ne comprends pas pourquoi, je n’arrive pas à corriger le tir.
Bref. Y a-t-il un pro d’API Platform par ici ?
Merci !