J'ai une question à propos de l'interprétation de JSON Patch (RFC 6902).interprétation du patch JSON spec
Supposons que j'avais une ressource qui ressemblait à ceci:
{
"type": "assembly",
"uri": "http://example.com/campSrv/Assembly/18",
"name": "/sample",
"description": "Hello, World Application",
"created": "2013-03-27T16:15Z",
...
}
La définition de cette ressource dit qu'il pourrait avoir une valeur appelée « balises » qui est défini comme étant un tableau de chaînes. Toutefois, cette ressource n'a actuellement pas de balises, donc mon service ne sérialise pas le tableau inexistant.
Supposons maintenant que je soumets la demande HTTP PATCH suivante:
PATCH http://example.com/campSrv/Assembly/18 HTTP/1.1
Content-Type: application/json-patch
[
{ "op": "add", "path": "/tags/0", "value": "flobbit" }
]
Si cela créer le tableau « tags » et ajoutez « flobbit » en tant que premier élément/ou que mon serveur doit retourner une erreur?
'{ "op": "ajouter", "chemin": "/ tags", "valeur": [ "flobbit"]}' Dans le cas ci-dessus, qu'en est si le tableau de balises existe déjà, si un ajouter "flobbit" ou remplacer le tableau entier par le contenu du tableau fourni? (Versus en utilisant op "replace" qui devrait rejeter la requête si le tableau de tags n'existe pas). (Si vous vous sentez le plus naturel pour remplacer la totalité de la matrice, si vous souhaitez ajouter plusieurs valeurs, utilisez plusieurs opérations) – GreenMoose
Je ne suis pas sûr de la tête. Mais, interpréter cela comme signifier, "ajouter un tableau contenant un seul élément" flobbit "au tableau existant." Ainsi, la propriété 'tags' mise à jour ressemblera à quelque chose comme' ["valeur existante", "valeur existante2", "etc.", ["flobbit"]] '. – svidgen
@svidgen Je crois que c'est incorrect.RFC6902 spécifie ceci pour l'opération 'ajouter': "Si l'emplacement cible spécifie un membre d'objet qui existe, la valeur de ce membre est remplacée." - Il montre ensuite comment ajouter quelque chose à un tableau existant: "Un élément à ajouter à un tableau existant [...] Si le caractère" - "est utilisé pour indexer la fin du tableau (voir [RFC6901])), ceci a pour effet d'ajouter la valeur au tableau " Donc le patch devrait ressembler à {" op ":" ajouter "," chemin ":"/tags/- "," value ":" flobbit "} vous voulez ajouter l'élément "flobbit" au tableau existant. –