<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
<ph type="x-smartling-placeholder">
Version 1.2.1
Vorgänge zum Einfügen, Abfragen und Aktualisieren für eine Cloud Spanner-Datenbank ausführen.
Dieser Inhalt bietet eine Referenz zum Konfigurieren und Verwenden dieser Erweiterung. Bevor Sie die Erweiterung aus einem API-Proxy unter Verwendung der ExtensionCallout-Richtlinie müssen Sie folgende Voraussetzungen erfüllen:
Erstellen Sie eine Cloud Spanner-Instanz, wie unter Instanzen erstellen und verwalten beschrieben, und erstellen Sie eine Datenbank.
Wenn Sie die Instanz und die Datenbank haben, können Sie dem GCP-Dienstkonto, das Ihre Erweiterung repräsentiert, die Berechtigung für den Zugriff auf Ihre Datenbank erteilen. Weitere Informationen zur zu verwendenden Rolle finden Sie unter Cloud Spanner-Rollen. Weitere Informationen zur Cloud Spanner-Zugriffssteuerung finden Sie unter IAM-Rollen anwenden und Zugriffssteuerung für Cloud Spanner.
Wenn Sie ein Dienstkonto mit einer Berechtigung für die gewünschte Zugriffsebene auf Ihre Datenbank haben, generieren Sie mit der GCP Console einen Schlüssel für das Dienstkonto. Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie diese Erweiterung konfigurieren.
Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie die Erweiterung mithilfe der Konfigurationsreferenz hinzufügen und konfigurieren.
Informationen zu Cloud Spanner
Cloud Spanner ist ein Dienst für relationale Datenbanken, der sich für relationale, strukturierte und semistrukturierte Daten eignet. Dieser Dienst erfordert Hochverfügbarkeit, strikte Konsistenz sowie transaktionale Lese- und Schreibvorgänge.
Wenn Sie Cloud Spanner zum ersten Mal verwenden, ist die Kurzanleitung in der Cloud Spanner-Dokumentation ein guter Ausgangspunkt.
Beispiele
Die folgenden Beispiele zeigen, wie Sie die Unterstützung für Cloud Spanner-Erweiterungsaktionen mithilfe der Richtlinie ExtensionCallout konfigurieren.
Daten hinzufügen
Im folgenden Beispiel wird mit der Aktion insert
der Erweiterung der Nutzertabelle ein neuer Nutzer hinzugefügt.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Insert-New-User">
<DisplayName>Insert New User</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
</ConnectorCallout>
Daten abrufen
In diesem Beispiel ruft eine Abfrage Nutzernamen und E-Mail-Werte aus der Tabelle user
ab.
Zuerst weist eine AssignMessage-Richtlinie eine postal.code.value
-Variable zur Verwendung in einer WHERE-Klausel der Abfrage zu. Dies ist ein Beispiel. Ihre Richtlinie würde den Wert wahrscheinlich basierend auf Clientanfrageparametern festlegen.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Postal-Code">
<AssignTo createNew="true" transport="http" type="request"/>
<AssignVariable>
<Name>postal.code</Name>
<Value>86519</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
Die folgende ExtensionCallout-Richtlinie führt eine Abfrage für die Datenbank aus, wobei der Inhalt der Variable postal.code.value
in der WHERE-Klausel verwendet wird.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-User-Data">
<DisplayName>Get User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
<Output>spanner.userdata.retrieved</Output>
</ConnectorCallout>
Die folgende AssignMessage-Richtlinie verwendet dann die Antwort der Erweiterung:
spanner.userdata.retrieved
gespeichert, da die zurückgegebene Antwort
an die Kundschaft.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Query-Response-Data">
<DisplayName>Get Query Response Data</DisplayName>
<AssignTo type="response" createNew="false"/>
<Set>
<Payload contentType="application/json">{spanner.userdata.retrieved}</Payload>
</Set>
</AssignMessage>
In diesem Beispiel werden die Antwortdaten im JSON-Format zurückgegeben, wie im Folgenden dargestellt.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Daten aktualisieren
In diesem Beispiel enthält das Element <Input>
den username
– den Primärschlüssel der Tabelle – und einen neuen Wert für die Spalte email
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Update-User-Data">
<DisplayName>Update User Data</DisplayName>
<Connector>spanner-users-products</Connector>
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
</ConnectorCallout>
Aktionen
<ph type="x-smartling-placeholder">
insert
Fügt die angegebenen Zeilen in die Datenbank ein.
Syntax
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "table-to-insert-into",
"rows" : "rows-to-insert"
}]]></Input>
Beispiel
Im folgenden Beispiel wird mit der Aktion insert
der Erweiterung der Nutzertabelle ein neuer Nutzer hinzugefügt. Eine Zeile wird hinzugefügt.
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address": "3695 Auctor Street",
"city": "Gresham",
"region": "OR",
"postalCode": "12693",
"email": "floydster@example.com"
}]
}]]></Input>
Anfrageparameter
Parameter | Beschreibung | Typ | Default | Erforderlich |
---|---|---|---|---|
tableName | Die Tabelle in der Datenbank, in die die Zeilen eingefügt werden sollen. | String | Keine. | Ja. |
Zeilen | Die einzufügenden Zeilen, ausgedrückt als Array in einem rows -JSON-Objekt. |
Array | Keine. | Ja. |
Antwort
Keine.
querySQL
Fragt die Datenbank mithilfe der SQL-Anweisung und den angegebenen Parametern ab. Parameter werden in der SQL-Anweisung mit vorangestellten @-Namen angegeben. Parameterwerte werden im Parameter params
dieser Aktion angegeben.
Weitere Informationen zur Cloud Spanner-Abfragesyntax finden Sie unter Abfragesyntax.
Syntax
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
Beispiel
In diesem Beispiel ruft eine Abfrage die Spaltenwerte username
und email
aus der Tabelle user
ab. Die SQL-Anweisung gibt einen postalCode
-Parameter an, der von der Flussvariablen postal.code.value
festgelegt wird.
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
Anfrageparameter
Parameter | Beschreibung | Typ | Default | Erforderlich |
---|---|---|---|---|
sql | Die auszuführende SQL-Abfrage. Sie können Parameter mit vorangestellten @-Parameternamen angeben. Diese Parameternamen müssen den Schlüsseln im Parameter params dieser Aktion entsprechen. |
String | Keine. | Ja. |
params | Ein Objekt, dessen Schlüssel und Werte die in der SQL-Abfrage verwendeten Parameternamen und -werte sind. Sie können hier mehrere Parameter auflisten. | Object | Keine. | Nein. |
Antwort
Ein rows
-Objekt, das ein Array von Spaltennamen/Wert-Paaren enthält, die von der Abfrage zurückgegeben werden. Beispiel:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
update
Aktualisiert Zeilen in der Datenbank mit den angegebenen Daten.
Syntax
<Input><![CDATA[{
"tableName" : "table-with-rows-to-update",
"rows" : "rows-to-update"
}]]></Input>
Beispiel
In diesem Beispiel wird die E-Mail-Adresse des Nutzers, dessen username
„Liz456“ lautet, mit einem neuen Wert aktualisiert. Eine Zeile wird aktualisiert.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
Anfrageparameter
Parameter | Beschreibung | Typ | Default | Erforderlich |
---|---|---|---|---|
tableName | Die Tabelle in der Datenbank, in der Zeilen aktualisiert werden sollen. | String | Keine. | Ja. |
Zeilen | Ein Array von Zeilendaten, die aktualisiert werden sollen. Jede Entität im Array muss die eindeutige ID (z. B. Primärschlüssel) für die zu aktualisierende Zeile enthalten. | Array | Keine. | Ja. |
Antwort
Keine.
Konfigurationsreferenz
Verwenden Sie Folgendes, wenn Sie diese Erweiterung zur Verwendung in API-Proxys konfigurieren und bereitstellen. Eine schrittweise Anleitung zum Konfigurieren einer Erweiterung mit der Apigee-Konsole finden Sie unter Erweiterung hinzufügen und konfigurieren.
Allgemeine Erweiterungseigenschaften
Für jede Erweiterung sind die folgenden Eigenschaften vorhanden.
Attribut | Beschreibung | Standard | Erforderlich |
---|---|---|---|
name |
Der Name, den Sie dieser Konfiguration der Erweiterung zuweisen. | – | Ja |
packageName |
Name des Erweiterungspakets, wie von Apigee Edge angegeben. | – | Ja |
version |
Versionsnummer für das Erweiterungspaket, von dem Sie eine Erweiterung konfigurieren. | – | Ja |
configuration |
Konfigurationswert speziell für die Erweiterung, die Sie hinzufügen. Weitere Informationen finden Sie unter Eigenschaften für dieses Erweiterungspaket. | – | Ja |
Eigenschaften für dieses Erweiterungspaket
Geben Sie Werte für die folgenden Konfigurationseigenschaften an, die für diese Erweiterung spezifisch sind.
Attribut | Beschreibung | Standard | Erforderlich |
---|---|---|---|
projectId | ID des GCP-Projekts, das die Datenbank enthält. | Keine. | Ja. |
instanceId | ID der Cloud Spanner-Instanz in Ihrem GCP-Projekt. | Keine. | Ja. |
databaseId | ID der Cloud Spanner-Datenbank. | Keine. | Ja. |
Anmeldedaten | Bei Eingabe in die Apigee Edge-Konsole ist dies der Inhalt Ihrer Dienstkonto-Schlüsseldatei. Beim Senden über die Verwaltungs-API handelt es sich um einen base64-codierten Wert, der aus der Schlüsseldatei des Dienstkontos generiert wird. | Keine. | Ja. |