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.