Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Wersja 2.0.0
Wykonywanie operacji wstawiania, zapytania i aktualizowania w bazie danych Cloud Spanner.
Te treści zawierają informacje na temat konfigurowania i używania tego rozszerzenia. Zanim użyjesz rozszerzenia z serwera proxy interfejsu API przy użyciu zasad dotyczących rozszerzenia z wywołaniem, musisz:
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 do bazy danych kontu usługi GCP, które reprezentuje Twoje rozszerzenie. Więcej informacji o roli, której należy użyć, znajdziesz w artykule Rola użytkownika Cloud Spanner. Więcej informacji o kontroli dostępu w usłudze Cloud Spanner znajdziesz w artykułach Stosowanie ról uprawnień i Kontrola dostępu w usłudze Cloud Spanner.
Gdy masz konto usługi z uprawnieniami do odpowiedniego poziomu dostępu do bazy danych, w konsoli GCP wygeneruj klucz dla tego konta. Podczas konfigurowania tego rozszerzenia użyj zawartości utworzonego pliku klucza JSON.
Użyj zawartości utworzonego pliku klucza JSON podczas dodawania i konfigurowania rozszerzenia za pomocą dokumentacji konfiguracji.
Informacje o usłudze Cloud Spanner
Cloud Spanner to relacyjna baza danych, która jest przydatna do obsługi danych relacyjnych, ustrukturyzowanych i słabo ustrukturyzowanych, które wymagają wysokiej dostępności, silnej spójności oraz odczytów i zapisów transakcyjnych.
Jeśli dopiero zaczynasz korzystać z usługi Cloud Spanner, zapoznaj się z samouczkiem w dokumentacji Cloud Spanner.
Przykłady
Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzenia Cloud Spanner za pomocą zasad dotyczących powiadomienia o rozszerzeniu.
Dodaj dane
W tym 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>
Pobieranie danych
W tym przykładzie zapytanie pobiera wartości nazwy użytkownika i adresu e-mail z tabeli user
.
Najpierw polityka przypisywania wiadomości przypisuje zmienną postal.code.value
do użycia w klauzuli WHERE zapytania. Oto przykład. Twoje zasady prawdopodobnie ustawiają 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>
Podana poniżej zasada ExtensionCalloutPolicy wykonuje zapytanie do bazy danych, używając w klauzuli WHERE zawartości zmiennej postal.code.value
.
<?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>
Podana niżej zasada przypisywania wiadomości używa odpowiedzi rozszerzenia, przechowywanej w zmiennej spanner.userdata.retrieved
, jako odpowiedzi zwracanej do klienta.
<?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, np. w takiej postaci:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Zaktualizuj dane
W tym przykładzie element <Input>
zawiera username
– klucz podstawowy tabeli – oraz nową wartość dla kolumny 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 tym 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ślny | 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
Wysyła zapytanie do bazy danych za pomocą instrukcji SQL z określonymi parametrami. Parametry są podawane w wyrażeniu SQL z przedrostkiem @; wartości parametrów są podawane w parametrze params
tej akcji.
Szczegółowe informacje o składni zapytań Cloud Spanner znajdziesz w artykule 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
. Wyrażenie SQL określa parametr postalCode
, który jest ustawiany na podstawie 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ślny | Wymagane |
---|---|---|---|---|
sql | Zapytanie SQL do wykonania. Parametry możesz określać, dodając przed ich nazwami znak @. Nazwy tych parametrów muszą być zgodne z kluczami w parametrze params tego działania. |
Ciąg znaków | Brak. | Tak. |
params | Obiekt, którego klucze i wartości to nazwy i wartości parametrów użytych w zapytaniu SQL. Możesz tu podać większą liczbę parametrów. | Obiekt | Brak. | Nie. |
Odpowiedź
Obiekt rows
zawierający tablicę par nazwa-wartość kolumny zwróconych przez zapytanie. Na przykład:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
update
Aktualizuje wiersze w bazie danych za pomocą określonych danych.
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 o identyfikatorze username
(Liz456) został zaktualizowany o nową wartość. Zaktualizowano 1 wiersz.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
Parametry żądania
Parametr | Opis | Typ | Domyślny | 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żda z encji w tablicy powinna zawierać unikalny identyfikator (np. klucz podstawowy) wiersza, który ma zostać zaktualizowany. | Tablica | Brak. | Tak. |
Odpowiedź
Brak.
Informacje o konfiguracji
Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w serwerach proxy API postępuj zgodnie z tymi instrukcjami. Instrukcje konfigurowania rozszerzenia za pomocą konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.
Właściwości wspólne 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 tych właściwości konfiguracji, które są specyficzne dla tego rozszerzenia.
Właściwość | Opis | Domyślny | Wymagane |
---|---|---|---|
Identyfikator projektu | Identyfikator projektu Google Cloud Platform 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 | Gdy wpiszesz go w konsoli Apigee Edge, będzie to zawartość pliku klucza konta usługi. Gdy jest wysyłany za pomocą interfejsu API zarządzania, jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. | Brak. | Tak. |