Verwenden des Editors für switch-Richtlinienbedingungen
Der Editor für switch-Richtlinienbedingungen stellt eine Benutzerschnittstelle bereit, die Sie bei der Erstellung der Bedingungen für die case-Klauseln in einer switch-Richtlinie unterstützt.
Sie erstellen ein Bedingungsscript, indem Sie die Optionen Gruppe hinzufügen und Bedingung hinzufügen zusammen mit den Operatoroptionen und vorab bereitgestellten Funktionsauswahlen verwenden. Im Feld Ausgabe wird das sich ergebende Bedingungsscript angezeigt und dynamisch aktualisiert, während Sie Ihre Bedingung erstellen.
Hinzufügen von Bedingungen
Wenn Sie den Richtlinienbedingungseditor öffnen, ist schon eine Erstbedingung bereitgestellt, die Sie konfigurieren können.
Verwenden Sie die Dropdown-Liste, um die Funktion auszuwählen, mit der Ihre Bedingung beginnen soll.
JSONata-Unterstützung in API ConnectAI Gateway
API ConnectAI Gateway unterstützt „ v2.0 “ der JSONata-Spezifikation mit folgenden Einschränkungen:
- Wenn Sie einen JSONata-Ausdruck zum Extrahieren oder Schwärzen von Feldern verwenden, sind auch die softverknüpften Kopien des Feldes von der Extraktions- oder Schwärzungsrichtlinie betroffen, selbst wenn sich die Felder an unterschiedlichen Speicherorten befinden.
- API ConnectAI Gateway unterstützt keine JSONata-Funktionen höherer Ordnung (Funktionen, die andere Funktionen verarbeiten).
- Wenn eine von JSONata unterstützte Funktion eine Funktion API ConnectAI Gateway höherer Ordnung als Argument aufruft, wird dieses Argument nicht unterstützt (da Funktionen höherer Ordnung nicht unterstützt werden).
- Die folgenden Funktionen der JSONata- v2.0 werden nicht unterstützt:
$eval()$sift()$each()$error()$assert()
$fromMillis()wird mit folgenden Einschränkungen unterstützt:- Der
$fromMillis()Parameter unterstützt Zahlen im Bereich von -5364662400000 bis 2903299199000.- Ein Wert kleiner als -5364662400000 wird als -5364662400000 interpretiert. Mit anderen Worten: Der Zeitstempel wird als „ 1800-01-01T00:00:00Z “ angegeben.
- Ein Wert, der größer als 2903299199000 ist, verwendet 2903299199000. Mit anderen Worten: Der Zeitstempel wird als „ 2261-12-31T23:59:59Z “ angegeben.
- Der
$now()wird mit folgenden Einschränkungen unterstützt:- Die folgenden Komponentenbezeichner werden nicht unterstützt:
W= Woche im Jahrw= Woche im MonatX= ISO-Wochennummerierung Jahrx= ISO-Wochennummerierung Monat
- Die Darstellung von Zahlen als Wörter wird nicht unterstützt, daher werden die folgenden Darstellungsmodifikatoren nicht unterstützt:
W= Wort in Großbuchstaben (zum Beispiel: [YW] => ZWEITAUSENDVIERUNDZWANZIG)w= Wort in Kleinbuchstaben (zum Beispiel: [Yw] => zweitausendvierundzwanzig)Ww= Wort in Groß- und Kleinschreibung (zum Beispiel: [YWw] => Zweitausendvierundzwanzig)
- Fehlermeldungen sind allgemein gehalten.
- Die folgenden Komponentenbezeichner werden nicht unterstützt:
In Tabelle 1 sind die Funktionserweiterungen aufgeführt, die Sie mit der Standard-JSONata-Notation verwenden können. Jede Erweiterung entspricht einem Teil des API-Kontexts.
| Erweiterung | Variabel | Beschreibung |
|---|---|---|
$apiCtx() |
Generischer Zugriff auf einen API-Kontext | Die $apiCtx() Erweiterung ermöglicht den generischen Zugriff auf einen API-Kontext.
|
$header(name) |
message.headers.name |
Nachrichtenheader |
$httpVerb() |
request.verb |
HTTP-Methode der Anforderung |
$operationID() |
api.operation.id |
ID der Operation |
$operationPath() |
api.operation.path |
Pfad der Operation |
$queryParameter('name') |
|
Sucht nach dem Index von query in request.parameters.name.locations und gibt zurück request.parameters.name.values[index], wobei der Wert für query [index] an den Stellen ist. Parameterwerte sind nicht URL-decodiert. |
$statusCode() |
message.status.code |
Statuscode |
$storageType([arg]) |
variable.bodySie können eine beliebige Variable im API-Kontext angeben. Wenn
keine Variable angegeben ist, wird die Standardvariable |
Speichertyp der Nachricht. Die unterstützten Werte sind binary, empty, graphql, json, streamund xml. |
$urlParameter('name') |
|
Sucht nach dem Index von path und query in request.parameters.name.locations und gibt ein einzelnes Array zurück, das sowohl path als auch query Werte aus request.parameters.name.valuesenthält. Wenn
die URL sowohl Pfad- als auch Abfrageparameterwerte enthält, enthält das Array die Pfadwerte gefolgt von den Abfragewerten. Die
Werte der einzelnen Parametertypen werden in der Reihenfolge hinzugefügt, in der sie empfangen wurden. Parameterwerte sind URL-decodiert.Beispielsweise enthält die folgende URL URL sowohl Pfad- als auch Abfrageparameterwerte. Die Funktion $urlParameter('breed') ` URL ` gibt das folgende Array von Werten zurück.In diesem Beispiel umfasst die URL einen API-Pfad, der als |
$xpath(path, xpathExpression) |
Sie können eine beliebige beschreibbare Variable im API-Kontext angeben. Bei xpathExpression muss es sich um eine Literalzeichenfolge handeln. |
Ermöglicht die Verwendung von XPath-Ausdrücken. Im folgenden Beispiel werden alle Preiselemente in der Quelle angegeben. |
In Tabelle 2 sind die Funktionserweiterungen aufgeführt, die Sie mit den APIs von „ GraphQL “ nutzen können.
| Erweiterung | Variabel | Beschreibung |
|---|---|---|
$gqlActiveOperation([graphql_message]) |
message.body |
Ruft den aktiven Vorgang ab, der in der angegebenen „ GraphQL “-Meldung gefunden wurde. Der Name operationName muss mit dem Namen des aktiven Vorgangs übereinstimmen. |
$gqlAlias(graphql_field_node) |
message.body |
Ruft den Alias eines Feldknotens „ GraphQL “ ab. |
$gqlFragments([graphql_message]) |
message.body |
Ruft die Fragmente ab, die in der angegebenen „ GraphQL “-Nachricht gefunden wurden. |
$gqlName([graphql_node]) |
message.body |
Ruft den Knotennamen ab. Bei Operationen lautet der operationNameKnotenname. Bei Feldern, Fragmentdefinitionen, Argumenten und anderen Elementen entspricht der Knotenname dem Namen des Elements. Standardmäßig wird der Wert operationNamemessage.body von abgerufen. |
$gqlOperations([graphql_message]) |
message.body |
Ruft die Operationen ab, die in der angegebenen „ GraphQL “-Nachricht enthalten sind. |
$gqlType([graphql_node]) |
message.body |
Bei den Abfrage-, Änderungs- und Abonnement-Abfragetypen wird der Vorgangstyp des aktiven Vorgangs abgerufen. |
- Sie können den Navigationsoperator
&(Verkettung) verwenden.
Sie können die folgenden numerischen JSONata-Operatoren verwenden:
+(Ergänzung)-(Subtraktion)*(Multiplikation)- / (Division)
- % (Modulo)
Sie können die folgenden JSONata-Vergleichsoperatoren für Zahlenwerte oder Zeichenfolgen verwenden:
=!=<><=>=
- Klammern, um eine Folge in ein Array umzuwandeln, die Operatorpriorität festzulegen oder komplexe Ausdrücke auf einen Kontextwert anzuwenden.
- Array-Bereiche und Prädikatsausdrücke.
- Die Platzhalterzeichen „einfaches Sternchen“ (
*) und „doppeltes Sternchen“ (**).
queryDie gesamte Abfrage „ GraphQL “, einschließlich Operationen und Fragmente.
operationNameBei einer anonymen Operation kann leer
operationNamesein.~fragmentSpreadNameon~typeCondition- ~~
fragmentDefinitionName
Nachdem Sie die Funktion ausgewählt haben, werden abhängig von der ausgewählten Funktion zusätzliche Felder angezeigt, sodass Sie die Bedingung fertigstellen können. Beispiel: Wenn Sie die Funktion $httpVerb() auswählen, wird eine Vergleichsoperator-Auswahlliste (=
oder !=) zusammen mit einer Auswahlliste mit HTTP-Verben auf der rechten Seite des Ausdrucks (GET, PUT, POST,
DELETE, HEAD, OPTIONS oder
PATCH) angezeigt.
Wenn Sie NOT auswählen, wird Ihre Bedingung mit einer $not-Funktion negiert.
Um weitere Bedingungen hinzuzufügen, klicken Sie auf Bedingung hinzufügen. Sie wählen dann aus, ob zwischen dieser Bedingung und der vorhergehenden ein and- oder ein or-Operator eingefügt werden soll.
Um zwei oder mehr Bedingungen in Klammern zu gruppieren, klicken Sie auf Gruppe hinzufügen und fügen Sie dann Ihre Bedingungen zur Gruppe hinzu. Danach wählen Sie aus, ob ein and- oder ein or-Operator zwischen dieser Gruppe und der vorhergehenden Bedingung oder Gruppe eingefügt werden soll.
Um eine eigene Bedingung völlig neu zu schreiben, wählen Sie Angepasst aus und geben Sie dann Ihr Script in das bereitgestellte Feld ein.
Beispiel
($statusCode() != 200 and ($httpVerb() = 'GET' or $httpVerb() = 'PUT'))Führen Sie dazu die folgenden Schritte im Bedingungseditor aus:Einfache Bedingungsanweisungen
Die folgenden Beispiele zeigen Bedingungen, die eine einzelne Funktion verwenden.
$httpVerb() verwendet, um die HTTP-Methode der Anforderung anzugeben.$httpVerb()="GET"$operationPath() verwendet, um den Pfad der Operation anzugeben.$operationPath()="/base/path-2"$operationID() verwendet, um die Operations-ID anzugeben.$operationID()="test-gatewayscript-GET"$statusCode() verwendet, um den Nachrichtenstatuscode anzugeben.$statusCode()=200$header(name) verwendet, um den Inhaltstyp des Nachrichtenheaders anzugeben.$header("Content-Type")="application/json"Kombinieren von Bedingungen mit logischen Operatoren
Sie können die Operatoren and und or verwenden, um mehrere Funktionen in einer einzigen Bedingung zu kombinieren.
test-gatewayscript-GET angegeben.$httpVerb()="GET" and $operationPath()="test-gatewayscript-GET"POST- oder eine PUT-Anforderung angegeben.$httpVerb()="POST" or $httpVerb()="PUT"test-gatewayscript_POST und ein Nachrichtenstatuscode gleich 200 oder eine API-Operation-ID gleich test-gatewayscript-GET sowie ein Nachrichtenstatuscode gleich 500 angegeben.($operationID()="test-gatewayscript-POST" and $statusCode()=200) or ($operationID()="test-gatewayscript-GET" and $statusCode()=500)test-gatewayscript-POST und ein Nachrichtenstatuscode gleich 200 mit einem API-Operationspfad gleich /base/path-2 angegeben.($operationID()="test-gatewayscript-POST" and $statusCode()=200) and $operationPath()="/base/path-2"text/plain und eine Nachrichtenheaderlänge gleich 300 oder ein Nachrichtenstatuscode gleich 200 angegeben.($header("Content-Type")="text/plain" and $header("Content-Length")=300) or $statusCode()= 200?from=TOOLKIT), hat der generierte API-Schlüssel eine feste Gültigkeitsdauer (TTL) von 5 Minuten.