Mise à jour à l’aide de la notation par patch JSON
L’exemple d’appel suivant montre comment mettre à jour un objet à l’aide d’un patch JSON, comme indiqué dans RFC-6902.
Pour plus d’informations sur la syntaxe JSON Patch, consultez le guide des principes de base des API.
Format d’API
PATCH /{OBJECT_TYPE}/{OBJECT_ID}
Paramètre | Description |
---|---|
{OBJECT_TYPE} |
Type de Catalog objet à mettre à jour. Les objets valides sont :
|
{OBJECT_ID} | Identifiant de l’objet spécifique que vous souhaitez mettre à jour. |
Requête
La requête suivante met à jour les champs name
et description
d’un jeu de données avec les valeurs fournies dans chaque objet de patch JSON. Lors de l’utilisation d’un patch JSON, vous devez aussi définir l’en-tête Content-Type sur application/json-patch+json
.
curl -X PATCH \
https://platform.adobe.io/data/foundation/catalog/dataSets/5ba9452f7de80400007fc52a \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json-patch+json' \
-d '[
{ "op": "add", "path": "/name", "value": "New Dataset Name" },
{ "op": "add", "path": "/description", "value": "New description for dataset" }
]'
Réponse
Une réponse réussie renvoie un tableau contenant l’identifiant de l’objet mis à jour. Cet identifiant doit correspondre à celui envoyé dans la requête PATCH. En exécutant une requête GET pour cet objet, vous voyez maintenant que seules les valeurs name
et description
ont été mises à jour, tandis que toutes les autres valeurs restent inchangées.
[
"@/dataSets/5ba9452f7de80400007fc52a"
]
Mise à jour à l’aide de la notation PATCH v2
Le point d’entrée /v2/dataSets/{DATASET_ID}
offre un moyen plus flexible de mettre à jour des attributs de jeux de données complexes ou profondément imbriqués.
En règle générale, lorsque vous mettez à jour un champ profondément imbriqué (tel que a.b.c.d
), chaque niveau du chemin d’accès doit déjà exister. S’il manque un niveau, vous devez les créer manuellement avant de définir la valeur finale. Cela nécessite souvent plusieurs opérations, ce qui ajoute de la complexité et augmente le risque d’erreurs.
Le point d’entrée /v2/dataSets/{DATASET_ID}
crée automatiquement tous les niveaux manquants dans le chemin d’accès. Au lieu de vérifier et d’ajouter manuellement des b
et des c
avant de d
définir, l’opération de v2
de PATCH effectue cette opération pour vous.
Lorsque vous envoyez une requête PATCH au point d’entrée /v2/dataSets/{DATASET_ID}
, il vous suffit d’envoyer la structure finale et le système remplit les parties manquantes avant d’appliquer la mise à jour.
If-Match
et If-None-Match
sont facultatifs pour le point d’entrée /v2/dataSets/{id}
. Les requêtes PATCH vers ce point d’entrée fusionnent dynamiquement les mises à jour, ce qui permet d’apporter des modifications sans récupérer la dernière version du jeu de données. Bien que cela réduise le risque de perte de données des mises à jour simultanées, vous pouvez utiliser If-Match
avec les dernières etag
pour vous assurer que les modifications ne s’appliquent qu’à une version spécifique. Sinon, If-None-Match
empêche les mises à jour si le jeu de données n’a pas été modifié depuis la dernière version connue.Format d’API
PATCH /V2/DATASETS/{DATASET_ID}
Paramètre | Description |
---|---|
{DATASET_ID} | Identifiant du jeu de données à mettre à jour. |
Requête
curl -X PATCH https://platform.adobe.io/data/foundation/catalog/v2/dataSets/67b3077efa10d92ab7a71858 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"extensions": {
"adobe_lakeHouse": {
"rowExpiration": {
"ttlValue": "P9Y"
}
}
}
}'
Réponse
Une réponse réussie renvoie un tableau contenant l’identifiant du jeu de données mis à jour, qui doit correspondre à l’identifiant envoyé dans la requête PATCH. L’exécution d’une requête GET pour cet objet indique désormais que l’objet extensions.adobe_lakeHouse.rowExpiration
a été créé sans nécessiter d’étapes de création manuelles préalables.
[
"@/dataSets/67b3077efa10d92ab7a71858"
]