API Connect Kontextvariablen
Liste der IBM®
API Connect -Kontextvariablen, auf die Sie verweisen können, wenn Sie Standardparameterwerte in einer Assemblierungsoperation definieren oder wenn Sie beim Definieren einer Richtlinie die Funktion getContext() verwenden.
Weitere Informationen zum Implementieren einer Assemblierungskomponente finden Sie unter Elemente in Ihre OpenAPI 2.0 -API-Assembly einschließen, Elemente in Ihrer OpenAPI 2.0 -API-Assembly einschließen. und Informationen zum Referenzieren von Kontextvariablen in API Connect finden Sie unter Variablenreferenzen in API Connect und Kontextvariablen in GatewayScript und XSLT-Richtlinien mit dem DataPower API Gateway.
Weitere Informationen zum Erstellen einer benutzerdefinierten Richtlinie finden Sie unter Erstellen von Richtlinien.
Allgemeine Kontextvariablen
- Für Planvariablen (wie z. B.
plan.nameoderplan.version) sind Planinformationen nur dann verfügbar, wenn für die erforderliche Operation eine Identifikation erforderlich ist und der Client die Authentifizierungsüberprüfung besteht. - Wenn Sie Ihre API in DataPower® Gateway (v5 compatible) implementieren, wird die Übergabe der Formulareingabe als Parameter an eine API mit Ausnahme der Client-ID und des geheimen Clientschlüssels nicht unterstützt. Diese Einschränkung gilt nicht, wenn Sie Ihre API in DataPower API Gatewayimplementieren.
| Name | Beschreibung | Berechtigung |
|---|---|---|
|
Die ID des Katalogs, in dem die API veröffentlicht wird. | Lesen/Schreiben |
|
Der Name des Katalogs, in dem die API veröffentlicht wird. | Lesen/Schreiben |
|
Das Pfadsegment, das für diesen Katalog steht. | Lesen/Schreiben |
api.endpoint.address |
Die Adresse des API-Gateway-Endpunkts. | Lesen/Schreiben |
api.endpoint.hostname |
Der Hostname des API-Gateway-Endpunkts, wie von der Anwendung angefordert. | Lesen/Schreiben |
|
Die ID der API. | Lesen/Schreiben |
api.name |
Der Name der API. Dies entspricht dem Feld x-ibm-name in der OpenAPI -Definition für die API. |
Lesen/Schreiben |
api.operation.id |
Die ID der Operation. | Lesen/Schreiben |
api.operation.path |
Der Pfad der Operation. | Lesen/Schreiben |
api.org.id |
Die Organisations-ID des API-Providers. | Lesen/Schreiben |
api.org.name |
Der Organisationskurzname des API-Providers. | Lesen/Schreiben |
api.properties.propertyname |
Der Name einer angepassten API-Eigenschaft. Eigenschaftswerte sind katalogspezifisch. Hinweis:
|
Lesen/Schreiben |
api.root |
Der API-Basispfad. | Lesen/Schreiben |
api.type |
Der API-Typ: REST oder SOAP. | Lesen/Schreiben |
api.version |
Die Versionszeichenfolge der API. | Lesen/Schreiben |
client.app.id |
Die Client-ID oder der Anwendungsschlüssel, der mit der Anforderung empfangen wird. | Lesen/Schreiben |
|
Der Lebenszyklusstatus der aufrufenden Clientanwendung. Folgende Werte sind möglich:
|
Lesen/Schreiben |
|
Der Zeichenfolgewert eines Anwendungsmetadatenschlüssels, wobei key für den Namen des Schlüssels steht. Sie können einer Anwendung Metadatenschlüssel hinzufügen, indem Sie entweder den Befehl apic apps:create oder den Befehl apic apps:update verwenden. Sie schließen die Metadatenschlüssel in den Konfigurationsdateiparameter ein, der an den Befehl übergeben wird. Zum Beispiel:
Dabei enthält myapp.yaml die folgenden Elemente:Anschließend können Sie den Wert eines Metadatenschlüssels in einer API-Assembly-Policy abrufen,
indem Sie eine Kontextvariable wie die folgende verwenden:
Beachten Sie, dass das Hinzufügen von Anwendungsmetadaten die Leistung der Gateway-Transaktionen beeinflussen kann. |
Lesen/Schreiben |
client.app.name |
Der Name der Anwendung, die als Ausgeber der Anforderung identifiziert wurde. | Lesen/Schreiben |
client.app.secret |
Der geheime Clientschlüssel, der in der Anforderung empfangen wird. | Lesen/Schreiben |
client.app.type |
Der Typ der Clientanwendung, die die Anforderung ausgegeben hat. | Lesen/Schreiben |
client.org.id |
Der eindeutige Identifikationsschlüssel der Organisation, der diese Anwendung gehört. | Lesen/Schreiben |
client.org.name |
Der Name der Organisation, der diese Anwendung gehört. | Lesen/Schreiben |
|
Das Ergebnis der Clientsicherheitsrichtlinie, die SUCCESS oder FAILUREist. |
Lesen/Schreiben |
|
Der Typ der Benutzerregistry, die für die Authentifizierung des extrahierten Clients für die Authentifizierung durch
Dritte verwendet wird. Die gültigen Werte sind LDAP und auth-url. |
Lesen/Schreiben |
|
Das Array von Headern, die der Anforderung hinzugefügt wurden, die während der Authentifizierung durch Dritte an diese API-Authentifizierungs-URL gesendet wurde. | Lesen/Schreiben |
|
Die Ergebnisse der Authentifizierung über Dritte. Folgende Werte sind möglich:
|
Lesen/Schreiben |
|
Der Benutzer für die Authentifizierung über Dritte. | Lesen/Schreiben |
|
Der Titel für die Berechtigungsnachweise, die in der Anforderung empfangen werden. | Lesen/Schreiben |
|
Der Name des Katalogs, in dem die API veröffentlicht wird. | Lesen/Schreiben |
|
Das Pfadsegment, das für diesen Katalog steht. | Lesen/Schreiben |
|
Der Nachrichtentext für den Fehler. | Lesen/Schreiben |
|
Der Name des Fehlers. | Nur Lesezugriff |
|
Die Transaktionsdaten, die in einer Assemblierungsprotokollaktion erfasst wurden. | Lesen/Schreiben |
message.attachments |
Das Array von Anhängen in einer mehrteiligen Nachricht. | Lesen/Schreiben |
message.attachments[].body |
Die Anhangsnutzdaten in einer mehrteiligen Nachricht | Lesen/Schreiben |
message.attachments[].headers |
Die Anhangsheader in einer mehrteiligen Nachricht | Lesen/Schreiben |
message.body |
Die Nutzdaten der Anforderungs- oder Antwortnachricht. Hinweis Die Kontextvariable
message.body wird mit der Funktion getContext() nicht unterstützt. Verwenden Sie stattdessen
die Funktion getvariable(). |
Lesen/Schreiben |
message.headers.name |
Der Wert des aktuellen benannten Headers der Nachricht oder des aktuellen benannten Headers des Stammteils einer mehrteiligen Nachricht. Das Segmentname ist von der Groß-/Kleinschreibung unabhängig. |
Lesen/Schreiben |
|
Der Wert des ursprünglichen benannten Headers der HTTP-Nachricht. Wenn die Assembly eine Aufrufaktion enthält, wird der Wert automatisch vom ursprünglichen benannten Header der Antwortnachricht aus der aufgerufenen URL gefüllt. Das Segmentname ist von der Groß-/Kleinschreibung unabhängig. |
Nur Lesezugriff |
|
Der Wert des aktuellen benannten Headers der mehrteiligen Nachricht. Das Segmentname ist von der Groß-/Kleinschreibung unabhängig. |
Lesen/Schreiben |
message.status.code |
Der HTTP-Statuscode der Antwort. | Lesen/Schreiben |
message.status.reason |
Der HTTP-Ursachenausdruck der Antwort. | Lesen/Schreiben |
|
Der Wert einer Eigenschaft in der Nachricht. Wenn beispielsweise myvar die Eigenschaft in der Nachricht ist, dann können Sie den Wert der Eigenschaft myvar abrufen, indem Sie message.variables.myvar lesen. |
Lesen/Schreiben |
plan.name |
Der Name des Plans. | Lesen/Schreiben |
plan.id |
Die eindeutige ID des Plans. | Lesen/Schreiben |
|
Die Ratenbegrenzung des Plans, bei der es sich um die Anzahl der API-Aufrufe pro Zeitintervall handelt. | Lesen/Schreiben |
|
Die feste Grenzwerteinstellung für das Ratenbegrenzungsschema, das durch [index] angegeben wird. |
Lesen/Schreiben |
|
Der Wert des Ratenbegrenzungsschemas, das durch [index] angegeben wird. Die Syntax lautet rate/interval. |
Lesen/Schreiben |
|
Die eindeutige ID des Bereichs, in dem der Plan enthalten ist. | Lesen/Schreiben |
|
Der Name des Bereichs, in dem der Plan enthalten ist. | Lesen/Schreiben |
plan.version |
Die Versionsnummer des Plans. | Lesen/Schreiben |
request.authorization |
Der syntaktisch analysierte HTTP-Header authorization. |
Nur Lesezugriff |
request.body |
Die Nutzdaten aus der eingehenden Anforderung. | Nur Lesezugriff |
request.content-type |
Normalisierter Wert für 'content-type'. | Nur Lesezugriff |
request.date |
Ein Datumsobjekt, das annähernd darstellt, wann die Anforderung vom Gateway empfangen wurde. | Nur Lesezugriff |
request.headers.name |
Der Wert des ursprünglichen benannten Headers der HTTP-Anforderung oder der Wert des aktuellen benannten Headers des Stammteils einer mehrteiligen Anforderung. Das Segmentname ist von der Groß-/Kleinschreibung unabhängig. Der Anforderungsheader kann nur in Richtlinien des Typs 'preflow' geändert werden. Weitere Informationen finden Sie unter Vorlaufrichtlinien anpassen. |
Lesen/Schreiben |
|
Der Wert des ursprünglichen benannten Headers der HTTP-Anforderung. Diese Variable wird nur erstellt, wenn der Anforderungsheader geändert wird. Das Segmentname ist von der Groß-/Kleinschreibung unabhängig. |
Nur Lesezugriff |
|
Der Wert des benannten Headers der mehrteiligen Anforderung. Das Segmentname ist von der Groß-/Kleinschreibung unabhängig. |
Nur Lesezugriff |
|
Sie können Ihre eingehenden Parameter von Pfad- und Abfrageparametern abrufen. | |
|
Ein Array von Zeichenfolgen, die die Parametertypen angeben, die dem in 'name' angegebenen Parameter zugeordnet sind. Die unterstützten Schlüsselwörter für Parametertypen lauten wie folgt.
|
Nur Lesezugriff |
|
Ein Array, das Werte der Parametertypen enthält, die dem in 'name' angegebenen Parameter zugeordnet sind. Wenn der erste Wert beispielsweise path in request.parameters.myparam.locations[]ist, ist der erste Wert in request.parameters.myparam.values[] das Array der Pfadwerte, die myparamzugeordnet sind.Anforderungsparameter können nur in Vorlaufrichtlinien geändert werden. Weitere Informationen finden Sie unter Vorlaufrichtlinien anpassen. |
Lesen/Schreiben |
|
Ein Array mit den ursprünglichen Werten der Parametertypen, die dem in Nameangegebenen Parameter zugeordnet sind. Diese Variable wird nur erstellt, wenn ein Anforderungsparameterwert geändert wird. | Nur Lesezugriff |
request.path |
Der Pfadabschnitt des Anforderungs-URI (request.uri), der mit dem Basispfad der API beginnt,
einschließlich des Zeichens '/', mit dem der Basispfad beginnt. |
Nur Lesezugriff |
|
Das Protokoll, das zum Empfangen der Anforderung verwendet wird: http oder https. |
Nur Lesezugriff |
request.querystring |
Die Anforderungs-Abfragezeichenfolge ohne das vorangehende Fragezeichen. | Nur Lesezugriff |
request.search |
Die Anforderungs-Abfragezeichenfolge mit dem vorangehenden Fragezeichen. | Nur Lesezugriff |
request.uri |
Der vollständige HTTP-Anforderungs-URI von der Anwendung. | Nur Lesezugriff |
request.verb |
Das HTTP-Verb dieser Anforderung. | Nur Lesezugriff |
|
Das Gateway, das die Anforderung empfängt. | Nur Lesezugriff |
|
Der Name des API-Gateways, wie im API Manager definiert. | Nur Lesezugriff |
|
Die Adresse des Clients, der die Anforderung gesendet hat. | Nur Lesezugriff |
|
Der Name der Domäne, zu der das Gateway gehört. | Nur Lesezugriff |
|
Die globale Transaktions-ID in den Protokollen. | Nur Lesezugriff |
|
Die Adresse des Gateways auf dem DataPower®-Gateway. | Nur Lesezugriff |
|
Die Zeit, zu der das Gateway mit der Verarbeitung der Anforderung begonnen hat. | Nur Lesezugriff |
|
Die Transaktions-ID der Gateway-Anforderung. | Nur Lesezugriff |
system.datetime |
Gibt eine Zeichenfolge zurück, die das aktuelle Datum samt Uhrzeit in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.time |
Gibt eine Zeichenfolge zurück, die die aktuelle Uhrzeit in der Systemzeitzone des Gateways darstellt. |
Nur Lesezugriff |
system.time.hour |
Gibt eine Zahl zwischen (einschließlich) 0 und 23 zurück, die die Stunde der aktuellen Uhrzeit in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.time.minute |
Gibt eine Zahl zwischen (einschließlich) 0 und 59 zurück, die die Minute der aktuellen Uhrzeit in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.time.seconds |
Gibt eine Zahl zwischen (einschließlich) 0 und 59 zurück, die die Sekunden der aktuellen Uhrzeit in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.date |
Gibt eine Zeichenfolge zurück, die das aktuelle Datum in der Systemzeitzone des Gateways darstellt. |
Nur Lesezugriff |
system.date.day-of-week |
Gibt eine Zahl zwischen (einschließlich) 1 und 7 zurück (Montag bis Sonntag), die den Wochentag in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.date.day-of-month |
Gibt eine Zahl zwischen 1 und 31 zurück, die den Tag des Monats in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.date.month |
Gibt eine Zahl zwischen 1 und 12 zurück, die den Monat in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.date.year |
Gibt eine vierstellige Zahl zurück, die das Jahr in der Systemzeitzone des Gateways darstellt. | Nur Lesezugriff |
system.timezone |
Gibt eine Systemzeitzonen-ID nach ISO 8601 für das Gateway zurück, die ein Zeichen, eine zweistellige Uhrzeit sowie die
Minuten enthalten kann. Beispiel: -04:00. |
Nur Lesezugriff |
OAuth-Kontextvariablen- DataPower Gateway (v5 compatible)
Die in diesem Abschnitt beschriebenen OAuth-Kontextvariablen gelten nur für die DataPower Gateway (v5 compatible). Details zu den OAuth-Kontextvariablen, die für DataPower API Gatewaygelten, finden Sie unter OAuth-Kontextvariablen.
| Name | Beschreibung |
|---|---|
oauth.access-token |
Wenn die Anforderung mit OAuth authentifiziert wird, enthält diese Variable die Zeichenfolge für das Zugriffstoken. |
oauth.miscinfo |
Diese Variable enthält Informationen, die explizit in den Authentifizierungs-URL- und Metadaten-URL-Headern enthalten
sind. Weitere Informationen finden Sie unter URL authentifizieren ". |
oauth.not-after |
Wenn die Anforderung mit OAuth authentifiziert wird, enthält diese Variable das Datum, zu dem das Token abläuft. |
oauth.not-before |
Wenn die Anforderung mit OAuth authentifiziert wird, enthält diese Variable das Datum, zu dem das Token ausgegeben wurde. |
oauth.resource-owner |
Wenn die Anforderung mit OAuth authentifiziert wird, enthält diese Variable den Namen des Ressourceneigners. |
oauth.scope |
Wenn die Anforderung mit OAuth authentifiziert wird, enthält diese Variable den Bereich dieses Zugriffstokens. |
oauth.introspect.active |
Immer für eine Introspektion verfügbar. Boolescher Wert. |
oauth.introspect.response |
Immer für eine Introspektion verfügbar. Zeigt die gesamten aktuellen Antwortnutzdaten an. Beispiel für Nutzdatenwerte: {“active”:true, “client_id”, “xxx-xxx”, “token_type”, “bearer”,
“scope”:“neon”} |
Andere Variablen können vom Drittanbieter im folgenden Format verfügbar sein: oauth.introspect.<variable> |
Bei einer Entschlüsselung des obigen Beispiels werden die folgenden Variablen für eine weitere Verarbeitung verfügbar
gemacht. |
Kontextvariablen für Anwendungszertifikate
In der folgenden Tabelle werden die Kontextvariablen beschrieben, die verfügbar sind, wenn ein Zertifikat für die Überprüfung des Zugriffs auf eine API verwendet wird. Diese können jedoch je nach verwendetem Signaturmechanismus variieren. Weitere Informationen finden Sie unter Internet X.509 Public Key Infrastructure Certificate and CRL Profile specification.
| Name | Beschreibung |
|---|---|
application.certificate.Base64 |
Base64-Format. |
application.certificate.fingerprint |
Fingerabdruck |
application.certificate.Version |
Version |
application.certificate.SerialNumber |
Seriennummer. |
application.certificate.SignatureAlgorithm |
Signaturalgorithmus. |
application.certificate.Issuer |
Der Aussteller des Zertifikats. |
application.certificate.Subject |
Thema |
application.certificate.NotBefore |
Vor diesem Datum nicht gültig. |
application.certificate.NotAfter |
Nach diesem Datum nicht gültig. |
application.certificate.SubjectPublicKeyAlgorithm |
Algorithmus für den öffentlichen Schlüssel des Betreffs. |
application.certificate.SubjectPublicKeyBitLength |
Länge für den öffentlichen Schlüssel des Betreffs. |
application.certificate.KeyValue.type |
Verschiedene Kontextvariablen, die vom Algorithmus und vom Schlüssel abhängig sind. Folgende Kontextvariablen sind
möglich:
|
Kontextvariablen für die API-Aktivitätenprotokollierung
Wenn die Aktivitätsprotokollierung für eine API aktiviert ist, wird eine log -Kontextvariable erstellt. Die
log -Kontextvariable enthält die Daten, die sich auf ein API-Ausführungsereignis beziehen. Nach Abschluss der
API-Ausführung wird die log -Kontextvariable in einen API-Ereignisdatensatz geschrieben, der für den
nachfolgenden Zugriff durch API-Analyse gespeichert wird. Details zu den Feldern, die in der Kontextvariablen log enthalten sind, finden Sie unter API-Ereignisdatensatzfelder.
- Wenn Sie DataPower API Gatewayverwenden, konfigurieren Sie die Aktivitätsprotokollierung in den API-Konfigurationseinstellungen (siehe Aktivitätsprotokollierung konfigurieren (OpenAPI 2.0) oder Aktivitätsprotokollierung konfigurieren (OpenAPI 3.0).
- Wenn Sie die DataPower Gateway (v5 compatible)verwenden, konfigurieren Sie die Aktivitätsprotokollierung, indem Sie eine Richtlinie Aktivitätenprotokoll zur API-Assembly hinzufügen.
log -Kontextvariablen, aber Sie
können sie in einer API-Assembly ändern, z. B.:- Fügen Sie Ihre eigenen Datenwerte hinzu, indem Sie eine Richtlinie Variable festlegen verwenden.
- Entfernen oder redigieren Sie Datenwerte mithilfe einer Neubearbeitungsrichtlinie; siehe Neubearbeitung- DataPower API Gateway oder Neubearbeitung- DataPower Gateway (v5 kompatibel).
Ändern oder ersetzen Sie die Kontextvariable logmithilfe einer Log -Richtlinie.
GraphQL-Kontextvariablen
Die aus der API-Verarbeitungs-und -assemblierungsaktion generierten GraphQL-Abfrage-und -Antwortvariablen werden im
API-Kontext in den message.attributes.graphql -Kontextvariablen gespeichert.
| Name | Beschreibung |
|---|---|
message.attributes.graphql |
Die Abfrage- und Antwortattribute der GraphQL-Nachricht. |
message.attributes.graphql.query |
Die Attribute einer GraphQL-Abfrage, einschließlich der Abfragezeichenfolge, des Operationsnamens und der Variablen. |
message.attributes.graphql.query.query |
Die GraphQL-Abfragezeichenfolge. |
message.attributes.graphql.query.variables |
Die Zuordnung von GraphQL-Variablen. |
message.attributes.graphql.query.operationName |
Der Name der auszuführenden Operation. |
message.attributes.graphql.query.operationType |
Der Typ der auszuführenden Operation. |
message.attributes.graphql.request |
Die Attribute der GraphQL-Anforderung. |
message.attributes.graphql.request.fieldCost |
Die gewichtete Summe der Kosten für alle Felder, auf die in der Abfrage zugegriffen wird. Die Kosten für jeden Feldzugriff sind im Schema konfiguriert. Diese Anzahl enthält Felder, deren Feldkosten nicht auf 0,0 gesetzt sind. |
message.attributes.graphql.request.fieldCounts |
Die maximale Häufigkeit, mit der jedes Feld durch die angegebene Abfrage abgerufen werden kann. Diese Zahl ist gleich der Häufigkeit, mit der der Resolver, der für die Erstellung des Feldwerts verantwortlich ist, ausgeführt werden muss. Diese Anzahl enthält Felder, deren Feldkosten nicht auf 0,0 gesetzt sind. |
message.attributes.graphql.request.typeCost |
Die gewichtete Summe der Kosten aller Typen, die in der Abfrage abgerufen werden. Die Kosten für jeden Typ sind im Schema konfiguriert. Diese Anzahl umfasst Typen, deren Typenkosten nicht auf 0,0 gesetzt sind. |
message.attributes.graphql.request.typeCounts |
Die maximale Häufigkeit, mit der jedes Feld von der angegebenen Abfrage abgerufen werden kann. Diese Anzahl umfasst Typen, deren Typenkosten nicht auf 0,0 gesetzt sind. |
message.attributes.graphql.response.fieldCost |
Die gewichtete Summe der Kosten für alle Felder in der Antwort auf die Abfrage. Die Kosten für jeden Feldzugriff sind im Schema konfiguriert. Wenn diese Summe nicht basierend auf der Analysekonfiguration in der Anforderung berechnet werden kann, werden die Feldkosten als maximaler ganzzahliger Wert angegeben, der zugeordnet werden kann. |
message.attributes.graphql.response.fieldCounts |
Die Häufigkeit, mit der jedes Feld in der Antwort auf die Abfrage abgerufen wurde. Diese Zahl ist gleich der Häufigkeit, mit der der Resolver, der für die Erstellung des Feldwerts verantwortlich ist, ausgeführt werden muss. Wenn diese Summe nicht basierend auf der Analysekonfiguration in der Anforderung berechnet werden kann, wird die Feldanzahl als maximaler ganzzahliger Wert angegeben, der zugeordnet werden kann. |
message.attributes.graphql.response.typeCost |
Die gewichtete Summe der Kosten für alle Typen in der Antwort auf die Abfrage. Die Kosten für jeden Typ sind im Schema konfiguriert. Wenn diese Summe nicht basierend auf der Analysekonfiguration in der Anforderung berechnet werden kann, werden die Typkosten als maximaler ganzzahliger Wert angegeben, der zugeordnet werden kann. |
message.attributes.graphql.response.typeCounts |
Die Häufigkeit, mit der ein Wert jedes Typs in der Antwort auf die Abfrage enthalten war. Wenn diese Summe nicht basierend auf der Analysekonfiguration in der Anforderung berechnet werden kann, wird die Typanzahl als maximaler ganzzahliger Wert angegeben, der zugeordnet werden kann. |
message.attributes.parse.GraphQLIntrospection |
Der Introspektionstyp der Assembly-GraphQL-Introspektionsaktion. Wenn eine GraphQL-Abfrage analysiert wird, wird diese Kontextvariable mit einem der folgenden Werte gefüllt:
|