Projekte

Wenn Sie den Abschnitt Einführung gelesen haben, dann wissen Sie, dass Sie Ihre Datenmodelle in Form von Repositorien modularisieren können. Eine Anzahl an Repositorien widerum bildet Ihr API-Projekt ab. Mit AaaS-API können Sie mehrere API-Projekte anlegen. Dafür reicht derzeit ein Name und ein optionaler Beschreibungstext.

Projekte anlegen

Sie senden einen HTTP-POST-Request an den entsprechenden Endpoint und schicken valides JSON im HTTP-Request-Body:

curl -X POST "https://localhost/aaas/projects" -H CONTENT_TYPE_HEADER -H ACCEPT_HEADER -d HTTP_REQUEST_BODY

Für obiges Beispiel könnte Ihr HTTP-Request-Body wie folgt aussehen:

{
  "name": "My API",
  "description": "This is my API project."
}

Wenn Sie keinen Beschreibungstext angeben möchten, können Sie ihn entweder auf null setzen oder Sie lassen das entsprechende Attribut weg:

{
  "name": "My API",
  "description": null
}
{
  "name": "My API"
}

Der API-Server antwortet dann mit dem erstellten Datensatz:

{
    "id": 1,
    "name": "My API",
    "description": "This is my API project.",
    "repositories": [
    ]
}

Hinweis

In allen folgenden Beispielen lassen wir den Header- und Request-Body-Parameter weg. In den Beispielen setzen wir voraus, dass Sie in allen HTTP-Requests den HTTP-Header Content-Type und Accept auf application/json setzen. Zur besseren Lesbarkeit fügen wir JSON-Code-Blöcke ein.

Projekte bearbeiten

Wenn Sie ein vorhandes Projekt bearbeiten möchten, dann senden Sie einen HTTP-PUT-Request an die entsprechende Resource und geben im HTTP-Request-Body an, welche Attribute Sie bearbeiten möchten:

curl -X PUT "https://localhost/aaas/projects/1" ...
{
  "name": "My edited API"
}
{
    "id": 1,
    "name": "My edited API",
    "description": "This is my API project.",
    "repositories": [
    ]
}

Es ist ausreichend, nur jene Objekt-Schlüssel zu senden, die Sie auch bearbeiten möchten:

{
  "description": "This is my edited API project."
}
{
    "id": 1,
    "name": "My edited API",
    "description": "This is my edited API project.",
    "repositories": [
    ]
}

Projekte löschen

Wenn Sie eines Ihrer API-Projekte löschen, dann senden Sie einen HTTP-DELETE-Request an die entsprechende Ressource:

curl -X DELETE "https://localhost/aaas/projects/1" ...

Der API-Server antwortet dann mit dem HTTP-Statuscode 204, welcher anzeigt, dass die Operation erfolgreich ausgeführt wurde und ansonsten kein weiterer Inhalt gesendet wird.

Hinweis

Löschoperationen wirken generell kaskadierend. Wenn Sie also ein Projekt löschen, dann werden zugehörige Repositorien und Services ebenfalls gelöscht.

Serialisierungsgruppen

Wenn Sie den Abschnitt Eingebettete Ressourcen im Kapitel Grundlagen gelesen haben, dann wissen Sie, dass Sie Serialisierungsgruppen benutzen können um eingebettete Ressourcen zusätzlich vom API-Server serialisieren zu lassen:

Gruppe Definition
repository Serialisiert/Deserialisiert repository-Attribute
service Serialisiert/Deserialisiert service-Attribute

Deseralisierung von Repositorien

Sie können Serialisierungsgruppen auch zur Deserialisierung benutzen. So sind Sie nicht nur in der Lage, eingebettete Ressourcen ohne zusätzliche HTTP-Requests abzufragen, sondern ebenso anzulegen und auch zu bearbeiten. Im folgenden Beispiel legen wir ein Projekt und zusätzlich zwei Repositorien an:

curl -X POST "https://localhost/aaas/projects?groups[]=repository" ...
{
  "name": "Web Application",
  "description": "This is my Web Application.",
  "repositories" : [
    {
      "name": "Blog",
      "description": "Blog repository."
    },
    {
      "name": "Shop",
      "description": "Shop repository"
    }
  ]
}

Der API-Server antwortet dann mit dem HTTP-Statuscode 201 (Ressource angelegt) und gibt Ihnen die entsprechende Ressource zurück:

{
    "id": 1,
    "name": "Web Application",
    "description": "This is my Web Application.",
    "repositories": [
        {
            "id": 1,
            "name": "Blog",
            "description": "Blog repository.",
            "project": "/aaas/projects/1",
            "services": [
            ]
        },
        {
            "id": 2,
            "name": "Shop",
            "description": "Shop repository",
            "project": "/aaas/projects/1",
            "services": [
            ]
        }
    ]
}

Deseralisierung von Repositorien und Services

Analog dazu können Sie auch gleich Services mit anlegen:

curl -X POST "https://localhost/aaas/projects?groups[]=repository&groups[]=service" ...
{
  "name": "Web Application",
  "description": "This is my Web Application.",
  "repositories" : [
    {
      "name": "Blog",
      "description": "Blog repository.",
      "services": [
        {
          "name": "Post",
          "description": "Service holds blog articles."
        }
      ]
    },
    {
      "name": "Shop",
      "description": "Shop repository"
    }
  ]
}
{
    "id": 3,
    "name": "Web Application",
    "description": "This is my Web Application.",
    "repositories": [
        {
            "id": 9,
            "name": "Blog",
            "description": "Blog repository.",
            "project": "/aaas/projects/3",
            "services": [
                {
                    "id": 2,
                    "name": "Post",
                    "description": "Service holds blog articles.",
                    "type": "list",
                    "repository": "/aaas/project/repositories/9",
                    "fields": [
                    ]
                }
            ]
        },
        {
            "id": 10,
            "name": "Shop",
            "description": "Shop repository",
            "project": "/aaas/projects/3",
            "services": [
            ]
        }
    ]
}

Sie erfahren mehr zu Repositorien und Services auf den nächsten Seiten.