Вы просматриваете документацию Apigee Edge .
Перейти к документации Apigee X. info
Версия 2.0.1
Выполняйте операции вставки, запроса и обновления в базе данных Cloud Spanner.
Этот контент предоставляет справочную информацию по настройке и использованию этого расширения. Перед использованием расширения из API-прокси с помощью политики ExtensionCallout необходимо:
Создайте экземпляр Cloud Spanner, как описано в разделе Создание и управление экземплярами , и создайте базу данных.
После того, как у вас есть экземпляр и база данных, предоставьте разрешение на доступ к вашей базе данных учетной записи службы GCP, которая представляет ваше расширение. Для получения дополнительной информации о роли для использования см. Роли Cloud Spanner . Для получения дополнительной информации об управлении доступом Cloud Spanner см. Применение ролей IAM и управление доступом для Cloud Spanner .
Если у вас есть учетная запись службы, которая имеет разрешение на необходимый вам уровень доступа к базе данных, используйте консоль GCP для генерации ключа для учетной записи службы . Используйте содержимое полученного файла JSON ключа при настройке этого расширения.
Используйте содержимое полученного файла JSON-ключа при добавлении и настройке расширения с помощью справочника по конфигурации .
О Cloud Spanner
Cloud Spanner — это служба реляционной базы данных, полезная для реляционных, структурированных и полуструктурированных данных, требующих высокой доступности, строгой согласованности и транзакционных операций чтения и записи.
Если вы только начинаете работу с Cloud Spanner, вам будет полезно ознакомиться с кратким руководством в документации Cloud Spanner .
Образцы
В следующих примерах показано, как настроить поддержку действий расширения Cloud Spanner с помощью политики ExtensionCallout .
Добавить данные
В следующем примере действие insert
расширения добавляет нового пользователя в таблицу пользователей.
<?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>
Получить данные
В этом примере запрос извлекает значения имени пользователя и адреса электронной почты из таблицы user
.
Во-первых, политика AssignMessage назначает переменную postal.code.value
для использования в предложении WHERE запроса. Это пример. Ваша политика, вероятно, установит значение на основе параметров запроса клиента.
<?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>
Следующая политика ExtensionCallout выполняет запрос к базе данных, используя содержимое переменной postal.code.value
в предложении 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>
Следующая политика AssignMessage затем использует ответ расширения, сохраненный в переменной spanner.userdata.retrieved
, в качестве ответа, возвращаемого клиенту.
<?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>
В этом примере данные ответа возвращаются в формате JSON, как показано ниже.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Обновить данные
В этом примере элемент <Input>
содержит username
— первичный ключ таблицы — и новое значение для столбца 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>
Действия
вставлять
Вставляет указанные строки в базу данных.
Синтаксис
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "table-to-insert-into",
"rows" : "rows-to-insert"
}]]></Input>
Пример
В следующем примере действие insert
расширения добавляет нового пользователя в таблицу пользователей. Добавляется одна строка.
<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>
Параметры запроса
Параметр | Описание | Тип | По умолчанию | Необходимый |
---|---|---|---|---|
имя_таблицы | Таблица в базе данных, в которую следует вставить строки. | Нить | Никто. | Да. |
ряды | Строки для вставки, выраженные в виде массива в объекте JSON rows . | Множество | Никто. | Да. |
Ответ
Никто.
запросSQL
Запрашивает базу данных, используя оператор SQL с указанными параметрами. Параметры указаны в операторе SQL с именами, дополненными @; значения параметров указаны в параметре params
этого действия.
Подробную информацию о синтаксисе запросов Cloud Spanner см. в разделе Синтаксис запросов .
Синтаксис
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
Пример
В этом примере запрос извлекает значения столбцов username
и email
из таблицы user
. Оператор SQL указывает параметр postalCode
, который устанавливается из переменной потока postal.code.value
.
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
Параметры запроса
Параметр | Описание | Тип | По умолчанию | Необходимый |
---|---|---|---|---|
sql | SQL-запрос для выполнения. Вы можете указать параметры с именами параметров, предваряемыми @. Эти имена параметров должны соответствовать ключам в параметре params этого действия. | Нить | Никто. | Да. |
параметры | Объект, ключи и значения которого являются именами и значениями параметров, используемых в запросе SQL. Здесь можно перечислить несколько параметров. | Объект | Никто. | Нет. |
Ответ
Объект rows
, содержащий массив пар имя-значение столбца, возвращаемых запросом. Например:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
обновлять
Обновляет строки в базе данных указанными данными.
Синтаксис
<Input><![CDATA[{
"tableName" : "table-with-rows-to-update",
"rows" : "rows-to-update"
}]]></Input>
Пример
В этом примере адрес электронной почты пользователя с username
Liz456 обновляется новым значением. Обновляется одна строка.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
Параметры запроса
Параметр | Описание | Тип | По умолчанию | Необходимый |
---|---|---|---|---|
имя_таблицы | Таблица в базе данных, в которой следует обновить строки. | Нить | Никто. | Да. |
ряды | Массив данных строк для обновления. Каждая сущность в массиве должна содержать уникальное значение идентификатора (например, первичного ключа) для строки для обновления. | Множество | Никто. | Да. |
Ответ
Никто.
Ссылка на конфигурацию
Используйте следующее при настройке и развертывании этого расширения для использования в API-прокси. Действия по настройке расширения с помощью консоли Apigee см. в разделе Добавление и настройка расширения .
Общие свойства расширения
Следующие свойства присутствуют для каждого расширения.
Свойство | Описание | По умолчанию | Необходимый |
---|---|---|---|
name | Имя, которое вы даете этой конфигурации расширения. | Никто | Да |
packageName | Имя пакета расширения, предоставленное Apigee Edge. | Никто | Да |
version | Номер версии пакета расширения, из которого вы настраиваете расширение. | Никто | Да |
configuration | Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. | Никто | Да |
Свойства этого пакета расширения
Укажите значения для следующих свойств конфигурации, специфичных для этого расширения.
Свойство | Описание | По умолчанию | Необходимый |
---|---|---|---|
projectId | Идентификатор проекта GCP, содержащего базу данных. | Никто. | Да. |
экземплярId | Идентификатор экземпляра Cloud Spanner в вашем проекте GCP. | Никто. | Да. |
databaseId | Идентификатор базы данных Cloud Spanner. | Никто. | Да. |
реквизиты для входа | При вводе в консоли Apigee Edge это содержимое файла ключа учетной записи службы . При отправке через API управления это значение в кодировке base64, сгенерированное из файла ключа учетной записи службы. | Никто. | Да. |