Services¶
Services formen Ihre Datenmodelle und bilden datenbankteschnisch Ihre Tabellen ab. Sie ordnen später Ihren Services Datenattribute (Felder) zu, mit denen Sie Ihren Datenmodellen Eigenschaften verleihen können. Sie können verschiedene Arten von Services erzeugen.
Servicetypen¶
Servicetyp | Beschreibung |
list | Ihr Service repräsentiert eine Liste. (Default) |
tree | Ihr Service repräsentiert eine verschachtelte Menge. |
Hinweis
Wenn Sie bei der Erzeugung eines Services keinen Typ angeben, wird standardmäßig ein Datenmodell vom Typ list
erzeugt.
In den meisten Fällen werden Sie Services vom Typ list
erzeugen wollen um beispielsweise Produkt-, Kunden- oder Artikellisten zu erzeugen. In einigen Fällen, wie beispielsweise bei einem Kategoriebaum oder anderen baumartigen Strukturen, wollen Sie allerdings verschachtelte Mengen speichern. Für diese Fälle legen Sie einen Service vom Typ tree
an.
Hinweis
Wir implementieren derzeit das Modell Nested Sets zur Abbildung Ihrer Baumstrukturen. In Zukunft werden eventuell noch weitere Modelle implementiert.
Services anlegen¶
Um einen Service anzulegen, senden Sie einen Namen und einen optionalen Beschreibungstext an den entsprechenden Endpunkt. Das dazugehörige Repositorium spezifizieren Sie über eine dereferenzierbare IRI. Außerdem können Sie noch den Servicetyp angeben. Wenn Sie das type
-Attribut weglassen, wird ein Service vom Typ list
erzeugt:
curl -X POST "https://localhost/aaas/repository/services" ...
{
"name": "Product",
"description": "This holds our product list.",
"type": "list",
"repository": "/aaas/project/repositories/1"
}
Der API-Server antwortet gibt Ihnen den angelegten Service zurück.
{
"id": 2,
"name": "Product",
"description": "This holds our product list.",
"type": "list",
"repository": "/aaas/project/repositories/1",
"fields": [
]
}
Services bearbeiten¶
Beim Bearbeiten eines Services übergeben Sie in der URI den eineindeutigen Schlüssel und senden die entsprechenden Attribute, die Sie bearbeiten möchten:
curl -X PUT "https://localhost/aaas/repository/services/2" ...
{
"description": "Updated description."
}
{
"id": 2,
"name": "Product",
"description": "Updated description.",
"type": "list",
"repository": "/aaas/project/repositories/1",
"fields": [
]
}
Services anzeigen¶
Beim Anzeigen aller Services, die einem bestimmten Repositorium zugeordnet sind, senden Sie einen HTTP-GET-Request an den betreffenden Endpunkt:
curl -X GET "https://localhost/aaas/repository/services?repository=1" ...
[
{
"id": 1,
"name": "Pharaoh",
"description": null,
"type": "tree",
"repository": "/aaas/project/repositories/1",
"fields": [
"/aaas/service/fields/1"
]
},
{
"id": 2,
"name": "Product",
"description": "Updated description.",
"type": "list",
"repository": "/aaas/project/repositories/1",
"fields": [
]
}
]
Services löschen¶
Sie senden einen HTTP-DELETE-Request:
curl -X DELETE "https://localhost/aaas/repository/services/2"
Der API-Server antwortet mit dem HTTP-Statuscode 204.
Serialisierungsgruppen¶
Sie finden im Folgenden eine Übersicht der verwendeten Serialisierungsgruppen von Services:
Gruppe | Definition |
project | Serialisiert/Deserialisiert project -Attribute |
repository | Serialisiert/Deserialisiert repository -Attribute |
Serialisierung von Repositorien¶
curl -X GET "https://localhost/aaas/repository/services/1?groups[]=repository" ...
{
"id": 2,
"name": "Product",
"description": "This holds our product list.",
"type": "list",
"repository": {
"id": 1,
"name": "Blog",
"description": "Blog repository.",
"project": "/aaas/projects/1",
"services": [
"/aaas/repository/services/2"
]
},
"fields": [
]
}
Serialisierung von Projekten und Repositorien¶
curl -X GET "https://localhost/aaas/repository/services/1?groups[]=repository&groups[]=project" ...
{
"id": 2,
"name": "Product",
"description": "This holds our product list.",
"type": "list",
"repository": {
"id": 1,
"name": "Blog",
"description": "Blog repository.",
"project": {
"id": 1,
"name": "Web Application",
"description": "This is my Web Application.",
"repositories": [
"/aaas/project/repositories/1"
]
},
"services": [
"/aaas/repository/services/2"
]
},
"fields": [
]
}