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": [
    ]
}