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:
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 Namespacestutorial
, 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 APIstringonly
, 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:
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):
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:
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.