Projet

Général

Profil

Development #20705

json data store : possibilité d'obtenir un objet par autre chose que son uuid

Ajouté par Frédéric Péters il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
14 décembre 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision ae53b754 (diff)
Ajouté par Frédéric Péters il y a plus de 6 ans

jsondatastore: add a new get_by_attribute endpoint (#20705)

Historique

#1

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).

#2

Mis à jour par Frédéric Péters il y a plus de 6 ans

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)

#3

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.

#4

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)
#5

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF