Open stevenkalwant opened 1 year ago
Bonjour,
Parlez-vous d'un appel POST
pour la modification d'un jeu de données? Ou d'un GET en lecture seulement?
Dans le cas d'une modification, vous pouvez regarder du côté de cet exemple https://doc.data.gouv.fr/api/dataset-workflow/#mise-%C3%A0-jour-des-metadonn%C3%A9es-de-la-fiche. Vous n'avez pas besoin de spécifier l'ensemble des champs du modèle, uniquement ceux que vous souhaitez modifier. Les références à des modèles extérieurs (user, orga) ne seront pas modifiées.
Pour le cas d'une incompréhension sur le retour de l'api, en effet les modèles de type XXReference
ont un champ class
qui vaut le nom du modèle référencé, qui est donc User
ici. C'est le cas pour l'ensemble des modèles de type référence, OrganizationReference
, DatasetReference
, etc.
Bonjour,
Oui j'ai oublié de préciser qu'il s'agit d'un appel GET sur /datasets/{dataset} Dans le JSON de retour j'ai "User" comme valeur pour la classe du champ "owner" au lieu de "UserReference" comme indiqué sur la documentation de l'API
Bonjour,
Le champ owner
est bien de type UserReference
, or un champ UserReference
a plusieurs attributs, dont les champs id
et class
(qui lui viennent de BaseReference
), avec class
qui pointe vers la classe référencée, ici User
. Mais le retour est bien un UserReference
.
Exemple de retour sur https://www.data.gouv.fr/api/1/datasets/metadonnee-des-photos-aeriennes-anciennes-de-lign/:
Cela correspond bien à la définition de UserReference:
Bonjour,
Les champs retournés correspondent bien aux champs attendus pour l'objet UserReference mais pour les champs id
et class
, est-ce que la valeur ne devrait pas être UserReference
au lieu de User
?
D'après l'erreur que j'ai en faisant un appel depuis mon code java :
com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'User' as a subtype of fr.gouv.stopc.datagouv.model.UserReference: known type ids = [DatasetReference, OrganizationReference, ReuseReference, UserReference] (for POJO property 'owner')
Bonjour,
Je rencontre un souci de parsing quand j'appelle l'endpoint /datasets/{dataset} dans mon application java .
En effet j'ai l'erreur suivante :
org.springframework.web.client.RestClientException: Error while extracting response for type [class fr.gouv.stopc.datagouv.model.Dataset] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Could not resolve type id 'User' as a subtype of
fr.gouv.stopc.datagouv.model.UserReference: known type ids = [DatasetReference, OrganizationReference, ReuseReference, UserReference] (for POJO property 'owner'); nested exception is com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'User' as a subtype of
fr.gouv.stopc.datagouv.model.UserReference: known type ids = [DatasetReference, OrganizationReference, ReuseReference, UserReference] (for POJO property 'owner') at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 506] (through reference chain: fr.gouv.stopc.datagouv.model.Dataset["owner"])
En faisant l'appel depuis postman je remarque que l'attribut "class" du champ "owner" est "User" au lieu de "UserReference"
"owner": { "avatar": null, "avatar_thumbnail": null, "class": "User", "first_name": "xxxxx", "id": "xxxxx", "last_name": "xxxxx", "page": "xxxxxx", "slug": "xxxxx", "uri": "xxxxxxx" },
Est-ce que vous sauriez si c'est normal ? Merci beaucoup !