Werte übergeben mit PUT (REST API: PUT-Call)

FreddyCollin

Ensign
Registriert
Dez. 2014
Beiträge
236
Hi Zusammen.

Ich arbeite grade mit einer Webapplikation mit der man eigene Apps bauen kann. Erfasste Daten werden im Backend gespeichert. Die Webapplikation hat eine API Schnittstelle und eine API Dokumentation. Allerdings gibt es kein Beispiel für mein Anliegen.

Hier ist der entsprechende Eintrag, der für mich vmtl relevant ist:
787460
... Ich verstehe jedoch nicht, wie mein Body befüllt werden muss um einen Wert zu updaten...

Folgende Daten wurden z.B erfasst (als JSON):

JSON:
{
    "ID": "1234567890",
    "Hersteller": "ABC",
    "Bezeichnung": "Hallo Hallo",
  }

Nun möchte ich, den Wert für "Hersteller" von "ABC" auf "XYZ" setzen. Wie mach ich das?

Danke im Voraus für jede Hilfe
 
Wenn ich Key/Value-Pairs lese, dann vermutlich in der Form

Code:
[..]/Definition/?ID=1234567890&Hersteller=XZZ&Bezeichnung=Hallo%20Hallo

Bzw. in der Textbox stünde dann, untereinander
Code:
ID=123456790
Hersteller=XYZ
Bezeichnung=Hallo Hallo

Schon mal probiert?
 
das ändern eines vorhandenen datensatzes macht man eigentlich mit patch statt put. put nimmt man, um einen kompletten datensatz anzulegen oder zu ersetzen. änderungen innerhalb eines datensatzes mit patch.

Code:
PATCH /request/uri/element

{
    "ID": "1234567890",
    "Hersteller": "ABC"
}

PATCH /request/uri/element=1234567890

{
    "Hersteller": "ABC"
}


PATCH /request/uri/element?ID=1234567890

{
    "Hersteller": "ABC"
}
 
Zuletzt bearbeitet:
Das definiert halt die API, abgesehen davon steht ja in der Doku, dass mit der Kollektion eine neue Minor Version erstellt wird. PUT passt da also.

In der Doku steht auch, dass der Parameter "values" ein Array im Body als Typ application/json ist.

Möglich wäre aus meiner Sicht also:

HTTP:
PUT https://api.domain.com/DataSource/19623-987984-23984r0/Versions/1.1/Definition/Values HTTP/1.1
Content-Type: application/json

{
    [
        "ID": "1234567890",
        "Hersteller": "XYZ",
        "Bezeichnung": "Hallo Hallo"
    ]
}

oder

HTTP:
PUT https://api.domain.com/DataSource/19623-987984-23984r0/Versions/1.1/Definition/Values HTTP/1.1
Content-Type: application/json

{
    "ID": "1234567890",
    "Hersteller": "XYZ",
    "Bezeichnung": "Hallo Hallo"
}

Wobei letzteres kein JSON-Array ist. Da ist die Doku aber auch eventuell etwas verwirrend.
 
ersteres ist aber auch kein valides JSON; da machst du ein objekt auf { }, aber dein value (array) hat keinen key.

ich werfe mal ein
Code:
[
  {
    "ID": "1234567890",
    "Hersteller": "XYZ",
    "Bezeichnung": "Hallo Hallo"
  }
]

in den ring, denn ayngushs interpretation aus der doku aus dem OP waren denke ich schon korrekt.
 
Ja, habe ich auch gerade gesehen, dass das "values": wieder abgehauen war, beim Tab-Formatieren... :D

HTTP:
PUT https://api.domain.com/DataSource/19623-987984-23984r0/Versions/1.1/Definition/Values HTTP/1.1
Content-Type: application/json

{
    "values": [
        {"ID": "1234567890"},
        {"Hersteller": "XYZ"},
        {"Bezeichnung": "Hallo Hallo"}
    ]
}

Edit:

Es könnte noch sein, dass das JSON-Array im Body so ausschaut...

JSON:
[
    {"ID": "1234567890"},
    {"Hersteller": "XYZ"},
    {"Bezeichnung": "Hallo Hallo"}
]

... das wäre jedoch eher ungewöhnlich, denn normalerweise werden in einer REST-API auch im JSON-Body alle Parameter benannt. Also ein Array namens "values" im HTTP Body, welches n Key : Value Paare beinhaltet.

Edit2: Key:Value Paare natürlich in geschweifte Klammern bei JSON... ich parse das so selten manuell im Kopf ;)
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben