Wyświetlasz dokumentację Apigee Edge.
  Otwórz dokumentację Apigee X. info
Wersja 1.4.2
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 paramstego 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. |