Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Wersja 1.4.1
Wykonywanie operacji wstawiania, wykonywania zapytań i aktualizowania w bazie danych Cloud Spanner.
Ta treść zawiera informacje na temat konfigurowania tego rozszerzenia i korzystania z niego. Zanim użyjesz zasady ExtensionCallout, musisz użyć rozszerzenia z serwera proxy interfejsu API:
Utwórz instancję Cloud Spanner zgodnie z opisem w artykule Tworzenie instancji i zarządzanie nimi oraz utwórz bazę danych.
Gdy masz już instancję i bazę danych, przyznaj uprawnienia dostępu do bazy danych kontu usługi GCP, które reprezentuje Twoje rozszerzenie. Więcej informacji o rolach znajdziesz w artykule na temat ról w Cloud Spanner. Więcej informacji o kontroli dostępu w Cloud Spanner znajdziesz w artykułach Stosowanie ról uprawnień i Kontrola dostępu w Cloud Spanner.
Jeśli masz konto usługi z uprawnieniami na wybranym poziomie dostępu do bazy danych, wygeneruj w konsoli GCP klucz dla konta usługi. Podczas konfigurowania tego rozszerzenia użyj zawartości powstałego klucza pliku JSON.
Podczas dodawania i konfigurowania rozszerzenia przy użyciu dokumentu dotyczącego konfiguracji użyj zawartości powstałego klucza pliku JSON.
Informacje o usłudze Cloud Spanner
Cloud Spanner to usługa relacyjnej bazy danych przydaje się w przypadku danych relacyjnych, uporządkowanych i półuporządkowanych, które wymagają wysokiej dostępności, silnej spójności oraz transakcyjnych odczytów i zapisów.
Jeśli dopiero zaczynasz korzystać z Cloud Spanner, na początek zapoznaj się z krótkim wprowadzeniem w dokumentacji tej usługi.
Sample
Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzenia Cloud Spanner za pomocą zasady ExtensionCallout.
Dodaj dane
W poniższym przykładzie działanie insert
rozszerzenia dodaje nowego użytkownika do tabeli użytkowników.
<?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>
Pobierz dane
W tym przykładzie zapytanie pobiera wartości nazwy użytkownika i adresu e-mail z tabeli user
.
Po pierwsze, zasada AssignMessage przypisuje zmienną postal.code.value
do użycia w klauzuli WHERE zapytania. To tylko przykład. Twoja zasada prawdopodobnie ustawi wartość na podstawie parametrów żądania klienta.
<?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>
Poniższa zasada ExtensionCallout wykonuje zapytanie w bazie danych, korzystając z zawartości zmiennej postal.code.value
w klauzuli WHERE.
<?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>
Poniższa zasada AssignMessage wykorzystuje następnie odpowiedź rozszerzenia zapisaną w zmiennej spanner.userdata.retrieved
jako odpowiedź zwracaną klientowi.
<?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>
W tym przykładzie dane odpowiedzi są zwracane w formacie JSON, jak w przykładzie poniżej.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Zaktualizuj dane
W tym przykładzie element <Input>
zawiera username
– klucz podstawowy tabeli – i nową wartość w kolumnie 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>
Działania
Insert
Wstawia określone wiersze do bazy danych.
Składnia
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "table-to-insert-into",
"rows" : "rows-to-insert"
}]]></Input>
Przykład
W poniższym przykładzie działanie insert
rozszerzenia dodaje nowego użytkownika do tabeli użytkowników. Dodano 1 wiersz.
<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>
Parametry żądania
Parametr | Opis | Typ | Domyślne | Wymagane |
---|---|---|---|---|
tableName | Tabela w bazie danych, do której mają zostać wstawione wiersze. | Ciąg znaków | Brak. | Tak. |
wiersze | Wiersze do wstawienia wyrażone jako tablica w obiekcie JSON rows . |
Tablica | Brak. | Tak. |
Odpowiedź
Brak.
querySQL
Wykonuje zapytanie do bazy danych za pomocą instrukcji SQL z określonymi parametrami. Parametry są podawane w instrukcji SQL z nazwami poprzedzonymi znakiem @. Wartości parametrów są określane w parametrze params
tego działania.
Szczegółowe informacje o składni zapytań Cloud Spanner znajdziesz w sekcji Składnia zapytań.
Składnia
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
Przykład
W tym przykładzie zapytanie pobiera wartości kolumn username
i email
z tabeli user
. Instrukcja SQL określa parametr postalCode
ustawiany ze zmiennej przepływu postal.code.value
.
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
Parametry żądania
Parametr | Opis | Typ | Domyślne | Wymagane |
---|---|---|---|---|
sql | Zapytanie SQL do wykonania. Parametry możesz określać z nazwami parametrów z przedrostkiem @. Te nazwy parametrów muszą odpowiadać kluczom w parametrze params tego działania. |
Ciąg znaków | Brak. | Tak. |
params | Obiekt, którego klucze i wartości są nazwami i wartościami parametrów używanymi w zapytaniu SQL. Możesz tutaj podać wiele parametrów. | Obiekt | Brak. | Nie. |
Odpowiedź
Obiekt rows
zawierający tablicę z parami nazwa-wartość kolumny zwróconych przez zapytanie. Na przykład:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
aktualizować
Aktualizuje wiersze w bazie danych o określone dane.
Składnia
<Input><![CDATA[{
"tableName" : "table-with-rows-to-update",
"rows" : "rows-to-update"
}]]></Input>
Przykład
W tym przykładzie adres e-mail użytkownika, którego username
to Liz456, zostanie zaktualizowany za pomocą nowej wartości. Zaktualizowano 1 wiersz.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
Parametry żądania
Parametr | Opis | Typ | Domyślne | Wymagane |
---|---|---|---|---|
tableName | Tabela w bazie danych, w której należy zaktualizować wiersze. | Ciąg znaków | Brak. | Tak. |
wiersze | Tablica danych wiersza do zaktualizowania. Każdy element w tablicy powinien zawierać unikalny identyfikator (np. klucz podstawowy), który ma być aktualizowany. | Tablica | Brak. | Tak. |
Odpowiedź
Brak.
Dokumentacja konfiguracji
Skorzystaj z podanych niżej instrukcji podczas konfigurowania i wdrażania tego rozszerzenia na potrzeby serwerów proxy interfejsów API. Instrukcje konfigurowania rozszerzenia w konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.
Typowe właściwości rozszerzeń
Dla każdego rozszerzenia dostępne są poniższe właściwości.
Usługa | Opis | Domyślnie | Wymagany |
---|---|---|---|
name |
Nazwa nadana konfiguracji rozszerzenia. | Brak | Tak |
packageName |
Nazwa pakietu rozszerzeń podana przez Apigee Edge. | Brak | Tak |
version |
Numer wersji pakietu rozszerzenia, z którego konfigurujesz rozszerzenie. | Brak | Tak |
configuration |
Wartość konfiguracji specyficzna dla dodawanego rozszerzenia. Zobacz Właściwości tego pakietu rozszerzeń | Brak | Tak |
Właściwości tego pakietu rozszerzeń
Podaj wartości następujących właściwości konfiguracji specyficznych dla tego rozszerzenia.
Właściwość | Opis | Domyślne | Wymagane |
---|---|---|---|
projectId | Identyfikator projektu GCP zawierającego bazę danych. | Brak. | Tak. |
instanceId | Identyfikator instancji Cloud Spanner w projekcie GCP. | Brak. | Tak. |
databaseId | Identyfikator bazy danych Cloud Spanner. | Brak. | Tak. |
dane logowania | Wpisana w konsoli Apigee Edge jest to zawartość pliku klucza konta usługi. Gdy jest wysyłana przez interfejs API zarządzania, jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. | Brak. | Tak. |