Felder¶
Felder sind Datenattribute, mit denen Sie Ihren Services Eigenschaften zuordnen können. Wenn Sie eine Liste von Produkten persistieren möchten und jedes Produkt hat beispielsweise einen Namen und einen Beschreibungstext, dann legen Sie für diese beiden Datenattribute entsprechende Felder an. Beim Anlegen eines Feldes müssen Sie den entsprechenden Datentyp des Attributes angeben. Bei der Generierung Ihrer Datenbanktabellen wird diese Information weitergereicht, sodass auf Datenbankebene Ihre Tabellenspalten den richtigen Datentypen zugeordnet werden. Wir implementieren derzeit folgende Datentypen:
Datentypen¶
Datentyp | Beschreibung | Beispiel |
string | Variabler Text. | Produktname |
text | Sehr lange Zeichenkette. | Produktbeschreibung |
integer | Ganzzahl. | Produktanzahl im Sortiment |
decimal | Gleitkommazahl. | Produktpreis |
float | Gleitkommazahl für Berechnungen. | |
boolean | Boolesche Variable mit zwei möglichen Werten. | Ist Produkt auf Lager? |
date | Datum. | Produkthaltbarkeit |
time | Uhrzeit. | |
datetime | Datum und Uhrzeit. | |
relation | Beziehungen zu anderen Feldern. | Siehe Kapitel Feldrelationen |
HTTP-Request-Body¶
Es reicht aus den Namen und Typ des entsprechenden Datenattributes zu spezifizieren, wenn Sie ein Feld anlegen wollen. Wenn Sie keinen Datentyp spezifizieren, dann wird standardmäßig eine variable Zeichenkette mit einer Länge von 255 Zeichen angelegt. Je nachdem welchen Datentyp Sie benutzen möchten, müssen Sie noch weitere Daten im HTTP-Request-Body mitsenden.
Schlüssel | Beschreibung | Optional |
name | Der Name des Datenattributes. | Nein |
dataType | Der Datentyp Ihres Feldes. | Ja |
description | Beschreibungstext. | Ja |
dataTypePrecision | Genauigkeit. Nur für decimal -Typ. |
Ja |
dataTypeScale | Anzahl Nachkommastellen. Nur für decimal -Typ. |
Ja |
length | Maximale Länge. Nur für string -Typ. |
Ja |
isUnique | Wert darf in der Spalte nur einmal vorkommen. | Ja |
isNullable | Wert darf auf null gesetzt werden. |
Ja |
Felder anlegen¶
Sie schicken valides JSON an den entsprechenden Endpunkt und spezifizieren den dazugehörigen Service:
curl -X POST "https://localhost/aaas/service/fields" ...
{
"name" : "color",
"dataType" : "string",
"length" : 30,
"service" : "/aaas/repository/services/1"
}
Der Server gibt Ihnen das angelegte Feld zurück:
{
"id": 1,
"name": "color",
"description": null,
"dataType": "string",
"dataTypePrecision": null,
"dataTypeScale": null,
"length": 30,
"isUnique": false,
"isNullable": false,
"service": "/aaas/repository/services/1",
"options": [
],
"constraints": [
],
"relation": null
}
curl -X POST "https://localhost/aaas/service/fields" ...
{
"name" : "price",
"dataType" : "decimal",
"dataTypePrecision" : 10,
"dataTypeScale" : 2,
"service" : "/aaas/repository/services/1"
}
{
"id": 2,
"name": "price",
"description": null,
"dataType": "decimal",
"dataTypePrecision": 10,
"dataTypeScale": 2,
"length": null,
"isUnique": false,
"isNullable": false,
"service": "/aaas/repository/services/1",
"options": [
],
"constraints": [
],
"relation": null
}
curl -X POST "https://localhost/aaas/service/fields" ...
{
"name" : "email",
"dataType" : "string",
"length" : 255,
"isUnique" : true,
"service" : "/aaas/repository/services/2"
}
{
"id": 3,
"name": "email",
"description": null,
"dataType": "string",
"dataTypePrecision": null,
"dataTypeScale": null,
"length": 255,
"isUnique": true,
"isNullable": false,
"service": "/aaas/repository/services/2",
"options": [
],
"constraints": [
],
"relation": null
}
Felder bearbeiten¶
Sie senden die Schlüssel, die Sie bearbeiten möchten an den entsprechenden Endpunkt:
curl -X PUT "https://localhost/aaas/service/fields/3" ...
{
"length" : 100
}
{
"id": 3,
"name": "email",
"description": null,
"dataType": "string",
"dataTypePrecision": null,
"dataTypeScale": null,
"length": 100,
"isUnique": true,
"isNullable": false,
"service": "/aaas/repository/services/1",
"options": [
],
"constraints": [
],
"relation": null
}
Felder anzeigen¶
Sie können sich alle Felder anzeigen lassen, die einem bestimmten Service zugeordnet sind, indem Sie einen entsprechenden HTTP-Query-Parameter verwenden:
curl -X GET "https://localhost/aaas/service/fields?service=1" ...
[
{
"id": 1,
"name": "color",
"description": null,
"dataType": "string",
"length": 30,
"dataTypePrecision": null,
"dataTypeScale": null,
"isUnique": false,
"isNullable": false,
"service": "/aaas/repository/services/1",
"fieldOptions": [
],
"constraints": [
],
"relation": null
},
{
"id": 2,
"name": "price",
"description": null,
"dataType": "decimal",
"length": null,
"dataTypePrecision": 10,
"dataTypeScale": 2,
"isUnique": false,
"isNullable": false,
"service": "/aaas/repository/services/1",
"fieldOptions": [
],
"constraints": [
],
"relation": null
}
]
Felder löschen¶
Sie senden einen HTTP-DELETE-Request an den entsprechenden Endpunkt:
curl -X DELETE "https://localhost/aaas/service/fields/18"
Wenn das Feld gelöscht wurde, antwortet der API-Server mit dem HTTP-Statuscode 204.
Serialisierungsgruppen¶
Sie finden im Folgenden eine Übersicht der verwendeten Serialisierungsgruppen von Feldern:
Gruppe | Definition |
relation | Serialisiert/Deserialisiert relation -Attribute |
constraint | Serialisiert/Deserialisiert constraint -Attribute |
constraintOption | Serialisiert/Deserialisiert constraintOption -Attribute |
fieldOption | Serialisiert/Deserialisiert fieldOption -Attribute |
Deserialiserung von Feldoptionen¶
So können Sie Felder und Feldoptionen in einem Schritt anlegen. Beim Generieren Ihrer Datenbankstruktur, werden Feldoptionen an die sich unter Ihrer Applikation befindliche Datenbank weitergereicht:
curl -X POST "https://localhost/aaas/service/fields?groups[]=fieldOption" ...
{
"name" : "sku",
"dataType" : "string",
"length" : "14"
"service" : "/aaas/repository/services/1",
"fieldOptions": [
{
"name" : "default",
"value" : "PRD-123456789"
}
]
}
{
"id": 7,
"name": "sku",
"description": null,
"dataType": "integer",
"length": null,
"dataTypePrecision": null,
"dataTypeScale": null,
"isUnique": false,
"isNullable": false,
"service": "/aaas/repository/services/1",
"fieldOptions": [
{
"id": 2,
"name": "default",
"value": "PRD-123456789",
"field": "/aaas/service/fields/7"
}
],
"constraints": [
],
"relation": null
}
Sie erfahren mehr zu Feldoptionen auf den nächsten Seiten.
Deseralisierung von Feldvalidierungen¶
curl -X POST "https://localhost/aaas/service/fields?groups[]=constraint&groups[]=constraintOption" ...
{
"name" : "title",
"dataType" : "string",
"service" : "/aaas/repository/services/2",
"constraints" : [
{
"name": "NotBlank",
"constraintOptions": [
{
"name": "message",
"value": "This value should be not blank."
}
]
}
]
}
{
"id": 4,
"name": "title",
"description": null,
"dataType": "string",
"length": null,
"dataTypePrecision": null,
"dataTypeScale": null,
"isUnique": false,
"isNullable": false,
"service": "/aaas/repository/services/2",
"fieldOptions": [
],
"constraints": [
{
"id": 2,
"name": "NotBlank",
"field": "/aaas/service/fields/19",
"constraintOptions": [
{
"id": 1,
"name": "message",
"value": "This value should be not blank.",
"constraint": "/aaas/field/constraints/2"
}
]
}
],
"relation": null
}
Sie erfahren mehr zu Validierungsbeschränkungen auf den nächsten Seiten.
Deseralisierung von Feldrelationen¶
Mithilfe der relation
-Serialisierungsgruppe können Sie auch Felder anlegen, die ihrerseits als Relation für andere Felder dienen:
curl -X POST "https://localhost/aaas/service/fields?groups[]=relation" ...
{
"name": "author",
"dataType": "relation",
"service": "/aaas/repository/services/1",
"relation": {
"service": "/aaas/repository/services/2",
"type": "ManyToOne"
}
}
{
"id": 4,
"name": "author",
"description": null,
"dataType": "relation",
"length": null,
"dataTypePrecision": null,
"dataTypeScale": null,
"isUnique": false,
"isNullable": false,
"service": "/aaas/repository/services/1",
"fieldOptions": [
],
"constraints": [
],
"relation": {
"id": 1,
"type": "ManyToOne",
"mappedBy": null,
"inversedBy": null,
"orphanRemoval": false,
"joinColumnName": null,
"joinColumnReferencedColumnName": "id",
"joinColumnIsUnique": false,
"joinColumnIsNullable": true,
"field": "/aaas/service/fields/4",
"service": "/aaas/repository/services/2"
}
}
Sie erfahren mehr zu Relationen auf den nächsten Seiten.