0

API-Calls im Ninox-Skript

Rufen Sie die Ninox-API mit der http()-Funktion über den Formeleditor auf

Um andere Dienste im Internet aufzurufen, verwenden Sie den Formeleditor in der Ninox-App und die Ninox-API. Abfragen von Informationen oder das Senden von Updates können mit der http()-Funktion von anderen REST-Diensten durchgeführt werden. Die http()-Funktion kann in Triggern mit POST verwendet werden, jedoch nicht mit GET.

☑️ Wenn die Funktion von einem Button aufgerufen wird, wird die http()-Funktion im Kontext des Clients/Web-Browsers ausgeführt. Um dies zu verhindern, setzen Sie do as server {http(…) end} zwischen die Funktion und den Button.

Syntax

http(method, url)
http(method, url, body)
http(method, url, headers, body)

⚠️ Bei Zugriff auf Ninox-Daten ist ein Body notwendig

Verwendet man http() um auf Daten in Ninox zuzugreifen muss ein Body übergeben werden. Sofern keine Informationen im Body übergeben werden müssen bleibt er lediglich leer. Ein Beispiel hierfür wäre:

http("GET", "https://api.ninox.com/v1/[...]", {Authorization: "Bearer xxxx-xxxx-xxxx", content-type: "application/json"}, {})

Parameter

method: GET, POST, PUT, DELETE

url: eine gültige HTTP/HTTPS-URL

headers: ein JSON-Objekt, das den HTTP-Header angibt

body: ein String oder ein beliebiges JSON-Objekt

Rückgabewert

Ein JSON-Objekt, das entweder ein Fehler- oder ein Ergebnis-Property enthält

Beispiele

💡 In geschweiften Klammern{ } steht für einen Platzhalter. Sowohl die geschweiften Klammern als auch der Inhalt müssen ersetzt werden, damit die Anfrage funktioniert.

Ein GET-Request ohne Autorisierungsheader

let response := http("GET", "http://mytestservice.com/path");
if response.error then
 alert(text(response.error))
else
 alert(text(response.result))
end

Ein GET-Request mit Autorisierungsheader

let response := http("GET", "http://mytestservice.com/path",
{
    "Authorization": "Bearer {accessToken}"
}, null);
if response.error then
 alert(text(response.error))
else
 alert(text(response.result))
end

Ein POST-Request mit Autorisierungsheader

let response := http("POST", "http://mytestservice.com/path",
{
    "Authorization": "Bearer {accessToken}",
    "Content-Type": "application/json"
},{
 hello: "World",
 'special character property': 1234
});
if response.error then
 alert(text(response.error))
else
 alert(text(response.result))
end

Aufruf von Diensten im Server-Kontext

Möglicherweise möchten Sie HTTP-Abfragen über den Ninox Cloud-Server und nicht über den Client ausführen. Dies ist besonders wichtig, wenn nicht-SSL-APIs aufgerufen werden, da die Ninox-native Anwendung für Mac, iPhone und iPad keine unsicheren Endpunkte abfragen kann.

☑️ Um die Ausführung von Code auf dem Ninox Cloud-Server zu erzwingen, betten Sie die http()-Funktion in einen do as server-Block ein.

Beispiel

let response := do as server
 http("GET", "http://mytestservice.com/path")
end;
if response.error then
 alert(text(response.error))
else
 alert(text(response.result))
end

URLs erstellen

Wenn Pfadparameter Leerzeichen oder Sonderzeichen enthalten, benötigen sie eine spezifische Kodierung. Um diese Kodierung zu handhaben, enthält Ninox-Skript eine Reihe von Funktionen:

HTTP Ninox-Skript
urlEncode("Test Parameter") "Test%20Parameter"
urlDecode("Test%20Parameter") "Test Parameter"
url("http://mytestapi.com", { page: 1, perPage: 20, order: "First Name" }

"http://mytestapi.com?page=1&perPage=20&order=First%20Name"

JSON-Syntax

Die JSON-Syntax stammt aus der JavaScript Object Notation Syntax:

  • Daten sind in Name/Wert-Paaren

    • Ein Name/Wert-Paar besteht aus einem Feldnamen (in doppelte Anführungszeichen gesetzt), gefolgt von einem Doppelpunkt, gefolgt von einem Wert

  • Daten sind durch Kommas getrennt

  • Geschweifte Klammern enthalten Objekte

  • Eckige Klammern enthalten Arrays

  • Zahlen als Ganzzahlen mit Punkt . als Dezimaltrennzeichen

Beispiel

{ name: "Lisa" }
{ name: "Lisa", age: 28 }
{ name: "Lisa", age: 28, address: { street: "A Street" } }
{ name: "Lisa", children: [ { name: "Charlie" }, { name: "Sarah" } ] }

JSON-Syntax

Beschreibung

{ }

ein leeres Objekt

[ ]

ein leeres Array

12.56

eine Zahl

"Lisa"

ein String

{ name: "Lisa" }

ein Objekt, das einen String enthält

{ name: "Lisa", age: 28 }

ein Objekt, das einen String und eine Zahl enthält

{ name: "Lisa", age: 28, address: { street: "A Street" } }

ein Objekt, das zwei Strings und eine Zahl enthält

{ name: "Lisa", children: [ { name: "Charlie" }, { name: "Sarah" } ] }

ein Objekt, das ein Array enthält, das zwei Strings enthält

Escaping von Objekteigenschaftsnamen

Wenn ein Eigenschaftsname Leerzeichen oder Sonderzeichen enthält oder mit einer Zahl beginnt, muss er in einfache Anführungszeichen ' ' gesetzt werden. Um ein einfaches Anführungszeichen in einem Eigenschaftsnamen zu verwenden, schreiben Sie zwei einfache Anführungszeichen.

Beispiel

{ name: "Lisa ""the quoted"" Maria" }

☑️ Optional können Sie reservierte Schlüsselwörter wie order,from und to in einfache Anführungszeichen ' ' setzen, wenn Sie diese Schlüsselwörter als Eigenschaftsnamen verwenden.

Escaping von String-Werten

String-Werte müssen in doppelte Anführungszeichen " " gesetzt werden. Um ein doppeltes Anführungszeichen in einem String-Wert zu verwenden, schreiben Sie zwei doppelte Anführungszeichen.

Beispiel

{ name: "Lisa ""the quoted"" Maria" }

Verwendung von Ausdrücken zur Konstruktion eines JSON-Objekts

Eigenschaftswerte und Mitglieder von Arrays können auch mit beliebigen Ninox-Ausdrücken konstruiert werden.

Beispiel

{ result: 10 * 5 + 6 } —> { result: 56 }
{ powers: for i in [1, 2, 3] do i*i end } —> { powers: [1, 4, 9] }

Evaluierung von JSON-Objekten

Die meisten Dienste geben JSON-Objekte zurück. Sie können JSON-Objekte mit Ninox-Skript verarbeiten und evaluieren.

Zugriff auf Objektwerte

Sie können auf Objektwerte oder Eigenschaften mit der Punktnotation . zugreifen.

Beispiel

response.result.id
response.result.fields.'First Name'

Antwort

null