Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Wersja 2.0.1
Wykonuj operacje wstawiania, wysyłania zapytań i aktualizowania w bazie danych Cloud Spanner.
Te treści zawierają informacje o konfigurowaniu i używaniu tego rozszerzenia. Zanim zaczniesz korzystać z rozszerzenia w proxy interfejsu API za pomocą zasady ExtensionCallout, musisz:
Utworzyć instancję Cloud Spanner zgodnie z opisem w artykule Tworzenie instancji i zarządzanie nimi oraz utworzyć bazę danych.
Gdy masz już instancję i bazę danych, przyznaj uprawnienia dostępu do bazy danych kontu usługi Google Cloud, które reprezentuje Twoje rozszerzenie. Więcej informacji o roli, której należy użyć, znajdziesz w artykule Role Cloud Spanner. Więcej informacji o kontroli dostępu do Cloud Spanner znajdziesz w artykułach Stosowanie ról IAM i Kontrola dostępu w Cloud Spanner.
Gdy masz konto usługi z uprawnieniami do poziomu dostępu do bazy danych, którego potrzebujesz, użyj konsoli Google Cloud, aby wygenerować klucz konta usługi. Podczas konfigurowania tego rozszerzenia użyj zawartości wynikowego pliku JSON z kluczem.
Podczas dodawania i konfigurowania rozszerzenia za pomocą dokumentacji konfiguracyjnej użyj zawartości wynikowego pliku JSON z kluczem.
Informacje o Cloud Spanner
Cloud Spanner to usługa relacyjnej bazy danych, która jest przydatna w przypadku relacyjnych, uporządkowanych i częściowo uporządkowanych danych wymagających wysokiej dostępności, silnej spójności oraz odczytów i zapisów transakcyjnych.
Jeśli dopiero zaczynasz korzystać z Cloud Spanner, dobrym punktem wyjścia będzie przewodnik Szybki start w dokumentacji Cloud Spanner.
Przykłady
Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzenia Cloud Spanner za pomocą zasady ExtensionCallout.
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>
Pobierz dane
W tym przykładzie zapytanie pobiera wartości nazw użytkowników i adresów e-mail z tabeli user.
Najpierw zasada AssignMessage przypisuje zmienną postal.code.value do użycia w klauzuli WHERE zapytania. To jest 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, używając 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>
Następnie zasada AssignMessage 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, takim jak ten poniżej.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Zaktualizuj dane
W tym przykładzie element <Input> zawiera username – klucz podstawowy tabeli – oraz nową wartość kol2/} 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. Dodawany jest 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 |
|---|---|---|---|---|
| nazwa tabeli | 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 zapytania 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.
Więcej informacji 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. Instrukcja 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. Możesz określić parametry z nazwami poprzedzonymi znakiem @. 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 to nazwy i wartości parametrów używane w zapytaniu SQL. Możesz tu podać wiele parametrów. | Obiekt | Brak. | Nie. |
Odpowiedź
Obiekt rows zawierający tablicę par nazwa kolumny – wartość 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, którego username to Liz456, jest aktualizowany o nową wartość. Aktualizowany jest 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 |
|---|---|---|---|---|
| nazwa tabeli | Tabela w bazie danych, w której należy zaktualizować wiersze. | Ciąg znaków | Brak. | Tak. |
| wiersze | Tablica danych wierszy do zaktualizowania. Każda encja w tablicy powinna zawierać unikalny identyfikator (np. klucz podstawowy) wiersza do zaktualizowania. | Tablica | Brak. | Tak. |
Odpowiedź
Brak.
Dokumentacja konfiguracyjna
Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w proxy interfejsu API postępuj zgodnie z tymi instrukcjami. Aby dowiedzieć się, jak skonfigurować rozszerzenie za pomocą konsoli Apigee, przeczytaj artykuł Dodawanie i konfigurowanie rozszerzenia.
Wspólne właściwości rozszerzenia
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 rozszerzenia
Określ wartości tych właściwości konfiguracji specyficznych dla tego rozszerzenia.