Ninox HTTP-Aufrufe

Mit der NX-Skriptsprache ist es möglich, andere Dienste im Internet anzurufen. Mit der http-Funktion können Sie entweder Informationen von anderen REST-Diensten abfragen oder Updates senden.

Die http-Funktion

Mit dieser Funktion kann ein weiterer HTTP-Endpunkt aufgerufen werden.

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 festlegt

body: Ein Textwert oder JSON-Objekt, siehe unten

Rückgabewert

Ein JSON-Objekt, das entweder eine result oder eine error Eigenschaft enthält.

Hinweis 1:Die http-Funktion darf nicht in Triggern verwendet werden.

Hinweis 2:Wenn sie von einer Schaltfläche aus aufgerufen wird, wird die HTTP-Funktion im Client / Webbrowser-Kontext ausgeführt. Dies kann verhindert werden, indem Sie einen "do as server http(...) end" Block verwenden.

Beispiele

Eine einfache GET-Abfrage

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


Eine GET-Abfrage mit Authorisation-Header

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

Eine POST-Abfrage

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

Dienste im Server-Kontext aufrufen

Manchmal ist es wünschenswert, HTTP-Anfragen nicht im Kontext des Clients, sondern im Kontext des Ninox Cloud-Servers auszuführen. Dies ist insbesondere dann erforderlich, wenn Endpunkte aufgerufen werden, die nicht durch SSL gesichert sind, da die nativen ninox-Anwendungen für Mac, iPhone und iPad nicht in der Lage sind, solche unsicheren Endpunkte abzufragen.

Um die Ausführung von Code auf dem Ninox Cloud-Server zu erzwingen, können Sie in einen do as server Block einbetten. 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 erzeugen

URL-Abfrageparameter benötigen eine spezielle Kodierung, wenn sie Leerzeichen oder Sonderzeichen enthalten. NX-Skript bietet eine Reihe von Funktionen zur Handhabung dieser Kodierung:

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-Objekte erzeugen

JSON-Objekte sind der JavaScript-Syntax sehr ähnlich. Geschwungene Klammern {} bezeichnen ein Objekt. Objekteigenschaften sind in der Fomr Name: Wert, durch Komma getrennt. Eckige Klammern [] bezeichnen ein Array. String-Werte werden durch Anführungszeichen "Wert" ausgedrückt. Zahlenwerte als einfache Zahlen mit einem Punkt als Dezimaltrennzeichen, wie 12.56.

Some examples:

{ } — an empty object
[ ] — an empty array
12.56 — a number
"Lisa" — a string
{ name: "Lisa" }
{ name: "Lisa", age: 28 }
{ name: "Lisa", age: 28, address: { street: "A Street" } }
{ name: "Lisa", children: [ { name: "Charlie" }, { name: "Sarah" } ] }

Sonderzeichen in Attributsnamen:

Wenn ein Attributsname Leerzeichen oder Sonderzeichen enthält oder mit einer Zahl beginnt, muss er in einfachen Anführungszeichen 'eingeklammert' werden. Um ein einzelnes Anführungszeichen in einem Attributsnamen einzuschließen, schreiben Sie zwei einfache Anführungszeichen, z. B.

{ 'Lisa''s name' : "Lisa" }

Hinweis zu Schlüsselwörtern: Reservierte Schlüsselwörter wie order, from, to können, müssen aber nicht in einfache Anführungszeichen gesetzt werden, wenn sie als Eigenschaftsname verwendet werden.

Sonderzeichen in Textwerten:

Textwerte müssen in doppelte Anführungszeichen "eingeschlossen" werden. Um ein Anführungszeichen in einen Textwert aufzunehmen, schreiben Sie zwei Anführungszeichen:

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

Verwenden von Ausdrücken zum Erstellen eines JSON-Objekts

Attribute und Elemente von Arrays können auch mit beliebigen NX-Ausdrücken erstellt werden. Einige Beispiele:

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

JSON-Objekte auswerten

Die meisten Dienste geben JSON-Objekte zurück. Mit NX-Skript ist es möglich, JSON-Objekte zu behandeln und auszuwerten.

Ein Attribut abfragen

Über die Punktnotation erhalten Sie Zugriff auf Objektattribute:

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

Werte konvertieren

Da NX-Skript eine statisch typisierte funktionale Sprache ist und es keine Schemadefinition für JSON-Objekte gibt, ist es manchmal erforderlich, den Typ eines Attributs explizit anzugeben oder zu konvertieren. Verwenden Sie die Funktionen text, number, date, datetime, time, appointment, url, phone, um Werte zu konvertieren. Einige Beispiele:

number(response.result.id)
text(response.result.fields.'First Name')
date(response.result.fields.'Birthday')

Arrays

Die Funktionen first, last und item können verwendet werden, um ein Objekt aus einem Array zu extrahieren:

first(response.result)
last(response.result)
item(response.result, 3)

Verwenden Sie eine For-In-Schleife, um die Elemente eines Arrays zu durchlaufen:

let firstNames := for item in response.result do
    item.fields.'First Name'
end