Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Wersja 2.0.2
wykonywać 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 ramach serwera proxy interfejsu API za pomocą zasady ExtensionCallout, musisz:
Utwórz instancję Cloud Spanner zgodnie z opisem w sekcji Tworzenie instancji i zarządzanie nimi, a następnie utwórz bazę danych.
Gdy masz już instancję i bazę danych, przyznaj uprawnienia do 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 do Cloud Spanner.
Gdy masz konto usługi z uprawnieniami do poziomu dostępu do bazy danych, który Cię interesuje, użyj konsoli Google Cloud, aby wygenerować klucz do konta usługi. Podczas konfigurowania tego rozszerzenia użyj zawartości utworzonego pliku JSON z kluczem.
Podczas dodawania i konfigurowania rozszerzenia za pomocą dokumentacji konfiguracji użyj zawartości utworzonego pliku JSON z kluczem.
Informacje o Cloud Spanner
Cloud Spanner to relacyjna baza danych, która jest przydatna w przypadku danych relacyjnych, strukturalnych i półstrukturalnych, które wymagają 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 samouczek wprowadzający w dokumentacji Cloud Spanner.
Przykłady
Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzeń 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>
Pobieranie danych
W tym przykładzie zapytanie pobiera wartości nazwy użytkownika i adresu e-mail z tabeli user.
Najpierw zasada AssignMessage przypisuje zmienną postal.code.value do użycia w klauzuli WHERE zapytania. To jest przykład. Zasady 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 zapisanej 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, jak poniżej.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Zaktualizuj dane
W tym przykładzie element <Input> zawiera element username, czyli klucz podstawowy tabeli, oraz nową wartość 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. Dodany zostanie jeden 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 w formie tablicy 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 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ń w 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. Parametry możesz określać za pomocą nazw parametrów poprzedzonych znakiem @. Nazwy tych parametrów muszą odpowiadać kluczom w parametrze params tego działania. |
Ciąg znaków | Brak. | Tak. |
| parametry | Obiekt, którego klucze i wartości to nazwy i wartości parametrów użytych 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ść. 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 |
|---|---|---|---|---|
| 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.
Odwołanie do konfiguracji
Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w proxy interfejsów API postępuj zgodnie z tymi instrukcjami. Instrukcje konfigurowania rozszerzenia za pomocą konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.
Wspólne 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ń
Określ 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 zawierającego bazę danych. | Brak. | Tak. |
| instanceId | Identyfikator instancji Cloud Spanner w projekcie Google Cloud. | Brak. | Tak. |
| databaseId | Identyfikator bazy danych Cloud Spanner. | Brak. | Tak. |
| dane logowania | Po wpisaniu w konsoli Apigee Edge jest to zawartość pliku klucza konta usługi. W przypadku wysyłania za pomocą interfejsu Management API jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. | Brak. | Tak. |