aoRestServer/ODATA
August 24th, 2023
09 Erstellen eines neuen Objektes
aoRestServer/ODATA für ABES/Objects - Hinweise für Frontend-Entwickler
Neue Objekte können erstellt werden, indem ein POST-Request auf die entsprechende kanonische URL der Tabelle durchgeführt wird.
Eine weitere Möglichkeit besteht darin, einen POST-Request auf die kanonische URL einer Unterkollektion eines Objektes durchzuführen.
Falls bei diesen Requests festgestellt wird, dass der angemeldete User nicht die entsprechenden Rechte hat, wird ein Fehler-Objekt mit dem Http-Resultcode 400 zurückgegeben.
Die beiden grundsätzlich zulässigen URL-Formen werden hier an Beispielen gezeigt.
Beispiel: Erstellen eines neuen Personen-Objektes
Request |
|
POST |
http://test.server.de/odata/Person |
Beispiel: Erstellen eines neues Adress-Objektes in der Adress-Kollektion einer vorhandenen Person
Request |
|
POST |
http://test.server.de/odata/Person(‘oid_der_person’)/collAdresse |
Bei diesen POST-Requests ist es möglich, ein JSON-Objekt im Body des Requests mitzugeben, das Initialisie-rungswerte für Felder das neu anzulegenden Objektes enthält.
Dabei können nur einfache Felder benutzt werden.
Alle Property-Namen im übergebenen JSON-Objekt, die nicht mit einem einfachen Feld des anzulegenden Objektes korrespondieren, werden ignoriert.
Umgekehrt werden alle Felder des anzulegenden Objektes, für die es keine korrespondierenden Properties im übergebenen JSON-Objekt gibt, auf ihren automatschen Initialisierungswert belassen.
Der Rückgabeumfang wird vom Request “beantragt”.
Falls der Request-Header “Prefer: minimal” gesetzt ist, wird ein leerer Body zurückgegeben und der Http-Statuscode ist 204 “No Content”.
Es wird ein Location-Header mit der URL des neu erstellten Objektes gesetzt.
Beispiel: Rückgabe ist Prefer: minimal
Request |
|
Header |
Prefer: minimal |
POST |
http://test.server.de/odata/Termin |
Response (Status=204) |
|
Header |
Location: http://test.server.de/odata/Termin( ‘4655502B6451707A3942556A382F502B384339543874’) |
Body |
[leer] |
Wird im Request “Prefer: representaion” angefordert, dann wird zusätzlich im Body die vollständige JSON-Repräsentation des neu angelegten Objektes zurückgegeben.
Der Statuscode ist dann 202 “Created”.
Beispiel: Rückgabe ist Prefer: representation
Request |
|
Header |
Prefer: representation |
POST |
http://test.server.de/odata/Termin |
Response (Status=204) |
|
Header |
Location: http://test.server.de/odata/Termin( ‘4655502B6451707A3942556A382F502B384339543874’) |
Body |
{ “@odata.context”: “http://test.server.de/odata/$metadata#Termin”, “_OID”: “457677434E45756C4A4E416137575A54302F5A474367”, “EXTOID_POSESSOR_DB”: “457677434E45756C4A4E416137575A54302F5A474367”, “EXTOID_CREATOR_DB”: “457677434E45756C4A4E416137575A54302F5A474367”, “RESTRICTEDFOR_TYP”: 0, “EXTOID_RESTRICTEDFOR_OID”: “457677434E45756C4A4E416137575A54302F5A474367”, “EXTOID_READONLYFOR_OID”: “457677434E45756C4A4E416137575A54302F5A474367”, “_Restricted”: false, “_RestrictionInherited”: false, “_ReadOnly”: false, “_Generation”: -1035455300, “Bez”: ” () 17.9.15-17.9.15, 09:00-09:15″, “OWNER_TYP”: 0, “_OWNER_OID”: “457677434E45756C4A4E416137575A54302F5A474367”, “_ObjectOwnerOID”: “457677434E45756C4A4E416137575A54302F5A474367”, “_ObjektKopie”: false, “ZeitVon”: “09:00:00.000”, “ZeitBis”: “09:15:00.000”, “Notizen”: null, …
“OID_ABLAGE”: “457677434E45756C4A4E416137575A54302F5A474367”, “OID_SV_IMPORT”: “457677434E45756C4A4E416137575A54302F5A474367”, “OID_EigeneAblage”: “457677434E45756C4A4E416137575A54302F5A474367”, “ErstelltAm”: “2015-09-17”, “OID_USER”: “457677434E45756C4A4E416137575A54302F5A474367”, “SETOID_USER”: “457677434E45756C4A4E416137575A54302F5A474367”, “OID_USERGROUP”: “457677434E45756C4A4E416137575A54302F5A474367”, “Farbe”: 7972351, “OID_ABESITEM”: “457677434E45756C4A4E416137575A54302F5A474367”, “TYP_ABESITEM”: 0, “KontextTyp”: null, “KontextName”: null, “Ort”: null, “OID_Verteiler”: “457677434E45756C4A4E416137575A54302F5A474367”, “privat”: false, “IstSerienTermin”: false, “SerienTyp”: null, “SerienMonatsTag”: 0, “SerienDatumsWerte”: null, “SerieBis”: null, “SerienTermine”: null, “Erinnerung”: “ohne”, “RemindMinutes”: -1, “RemindLookup”: 0 } |
Die Bildschirmfotos können in aktuellen Programmversionen visuell abweichen.
Sie haben Fragen oder Anregungen? Schreiben Sie uns gerne an support@rackow-software.de