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)

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