Zum Hauptinhalt springen

Erstellung einer ersten API

Bei der Anmeldung an die generische Pflegeoberfläche /form zeigt diese erst einmal nichts an, da noch keine API definiert wurde:

Screenshot der Project-View bei einem noch leeren CMS

Mit einem HTTP POST an /schema/tutorial/stringonly wird eine API stringonly im Namensraum tutorial angelegt. Die Objektklasse soll nur ein einziges Feld ‚name‘ der Art ‚Zeichenkette‘ ("type": "string") enthalten, die zwischen 4 ("min": 4) und 40 ("max": 40) Zeichen enthalten muss.

Die generische Oberfläche erhält den Hinweis, dass diese Eigenschaft in der Tabellenansicht erscheinen soll ("column": true). All dies beschreibt das JSON, das an das CMS gesendet wird:

{
"application": "Tutorial",
"label": "Hello World",
"project": "NeuroomNet-CMS Tutorial",
"tags": [],
"fields": {
"name": {
"cms": {
"column": true
},
"type": "string",
"min": 4,
"max": 40
}
}
}

Bei den Attribut-Werten zu application und label im JSON-File handelt es sich um reine Anzeigenamen für das CMS-Frontend (oder andere Anwendungen, welche diese Felder entsprechend auswerten):

  • application: Anzeigename für den Namespace für das CMS-Frontend. In diesem Beispiel ist der Anzeigename des Namespaces tutorial, welcher im HTTP-Request enthalten ist, Tutorial (mit einem Großbuchstaben am Anfang).
  • label: Anzeigename für die API / Collection für das CMS-Frontend. In diesem Beispiel ist der Anzeigename der API stringonly, welche im HTTP-Request enthalten ist, Hello World
  • project: Projekt in der Projects-View, dem die Kombination aus Namespace und API zugeordnet werden soll.

Wichtig: Falls eines oder mehrere dieser Felder fehlen bei der Definition einer API, dann erscheint die Collection höchstwahrscheinlich nicht in der Projects-View im CMS-Frontend (ist dann dort nur über die Namespace-View zugänglich).

Dieses JSON-File kann bspw. wie folgt an das CMS geschickt werden über Kommandozeile (hierbei ist natürlich ein entsprechender User erforderlich und das obige JSON-File muss als Datei Request1.json entsprechend vorliegen):

curl -X POST -H "Content-Type: application/json" --user "<myuser>":"<mypassword>" -d @Request1.json https://<url>/schema/tutorial/stringonly

Nach einem Webseiten-Reload erscheinen der Namespace und die API entsprechend im CMS-Frontend (über die Projekt-Ansicht oder Namespace-Ansicht) und die Collection kann inspiziert werden nach Mausklick:

CMS Frontend: Noch leere API stringonly

Die Collection stringonly ist natürlich noch leer. Deshalb fügen wir nun über das CMS-Frontend einen Datensatz hinzu (Button "Add new item", im Popup einen entsprechenden Namen eingeben und speichern):

CMS Frontend: API stringonly nun mit einem Element

Alle CRUD Operation auf einer API können auch über HTTP/POST ausführt werden. Daher lässt sich ein neuer Datensatz mit einem POST auf /data/tutorial/stringonly anlegen mittels folgendem curl-Request über Kommandozeile:

curl -X POST -H "Content-Type: application/json" --user "<myuser>":"<mypassword>" -d @Request2.json https://<url>/data/tutorial/stringonly

Das dazugehörige JSON-File "Request2.json" hat folgenden Inhalt:

{
"name": "Nicolas"
}

Nach Reload der Webseite / CMS-Frontend ...form/#/tutorial/stringonly ist der Datensatz zu "Nicolas" sichtbar:

CMS-Frontend: API stringonly nun mit zwei Elementen

Zu beachten ist, dass

  • Daten-CRUD-Requests an ...data/namespace/api geschickt werden,
  • Schema-Änderungs-Requests an ...schema/namespace/api geschickt werden und
  • das (optionale) CMS-Frontend normalerweise unter ...form/#/... verfügbar ist.