Development #20705
json data store : possibilité d'obtenir un objet par autre chose que son uuid
0%
Description
On a juste /<uuid>/; sans faire de folie j'ajouterais bien la possibilité d'url genre /by/<attribute>/<value>/ ; ça concernerait uniquement les attributs de premier niveau, et ça ne marcherait pas quand la valeur contient un /.
Alternativement, permettre de plugguer de manière générique le système de requêtes du connecteur CSV en sortie d'endpoint, mais c'est une toute autre ampleur.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 6 ans
Alternativement (bis), permettre à la création d'un objet de préciser une valeur pour son uuid (comme ça on ne trimballe pas l'uuid comme identifiant interne et un identifiant externe dans le json field).
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-jsondatastore-add-a-new-get_by_attribute-endpoint-20.patch 0001-jsondatastore-add-a-new-get_by_attribute-endpoint-20.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Variante de la première idée, /by/<attribute>/?value=<value>, et noté dans la description de l'endpoint que ça retourne un unique objet. (on pourrait avoir une variante retournant une liste, etc. mais là je pense qu'il y aura bascule vers une généricisation du code des requêtes (du connecteur CSV)).
En attendant, parce que j'en ai besoin ainsi "tout de suite", ce mini-endpoint. (qui pour la forme vient après #21011)
Mis à jour par Thomas Noël il y a plus de 6 ans
Ack.
(mais)
Est-ce qu'on arrive à être sûr qu'en cas de réponse potentiellement multiple, c'est bien toujours le même objet qui est renvoyé ? (a priori je vois pas de order... mais bon, hé, on peut aussi décider de s'en fiche, à vrai dire).
Peut-être "documenter" l'affaire avec ce bout de test, tout en fin:
... resp = app.get('/jsondatastore/foobar/data/by/foo/', params={'value': 'bar3'}) assert resp.json['id'] in (uuid, uuid2)
Allez j'arrête de bavarder.
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
C'est fait pour un unique objet et j'ai décidé de très bien vivre avec un comportement indéfini si jamais il y en avait plusieurs…
commit ae53b75454c7e2419a04d43301094e8e5a6ab216 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Jan 5 14:34:45 2018 +0100 jsondatastore: add a new get_by_attribute endpoint (#20705)
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
jsondatastore: add a new get_by_attribute endpoint (#20705)