Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Wersja 2.0.1
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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&quo>t;tru<e" ena>bled="true<" name=>"<;Insert-N>ew-User"
Disp<layNameIns>ert N<ew Use>r/Disp<layName>
<Conne><ctorspanner-users-products/Connector
Actioninsert/Action
Input![CDATA[{
"tableName" : "user",
"rows" : [{
"username": "jonesy42",
"firstName": "Floyd",
"lastName": "Jones",
"address"><;: &qu>o<t;3695 Auctor Str>eet",
"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&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fa>lse&q<uot; enabled="true" name="Assign-Postal-Cod>e&quo<t;
AssignT>o createN<ew=&>quot;true&q<uot; >transport<=&quo>t;htt<p">; typ<e="request>"<;/
AssignVariable
> < Namepostal.code/Name
> < Valu>e86519/Value
/AssignVariable
IgnoreUnresolvedVariablestrue/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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&q>uot;t<rue" e>nabled="<true" n>ame=&<quot;Get->User-Data"
Di<splayNameG>et Us<er Dat>a/Displa<yName
> Co<nnect><orspanner-users-products/Connector
ActionquerySQL/Action
Input![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalC><ode&qu>ot;<,
> "params" : {
< >&<quot;postalCode&q>uot; : "{postal.code.value}"
}
}]]/Input
Outputspanner.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&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="false&q>uot; <enabled=&qu>ot;true" name=&quo<t;Get-Query->Respo<nse-Data"
DisplayNameGet Query Res>ponse< Da>ta/Displa<yName
AssignTo type="response>" createNew="false<"/
> S<et
> < 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=">;true<" enab>led="true&q<uot; name=&q>uot;U<pdate-Use>r-Data"
Displ<ayNameUpda>te Us<er Dat>a/Disp<layName>
<Conne><ctorspanner-users-products/Connector
Actionupdate/Action
Input![CDATA[{
"tableName" : "user",
"rows&quo><t;: [{>
< ">;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",
"row><s">; : "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",
"c><ity&qu>ot;: "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" : {
&q><uot;pa>ram1" : "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" : {
"postalCo><de&quo>t; : "{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",
"row><s">; : "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&q><uot;,
> "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. |