SearchÔÇŽ
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, headers)
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", {
Authorization: "Bearer API-Key",
'Content-Type': "application/json"
}, {
hello: "World",
'special character property': 1234
});
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