Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
Versione 1.4.1
Eseguire operazioni di inserimento, query e aggiornamento su un database Cloud Spanner.
Questi contenuti forniscono riferimento per la configurazione e l'utilizzo di questa estensione. Prima di utilizzare l'estensione da un proxy API con le norme relative ai callout, devi:
Crea un'istanza Cloud Spanner, come descritto in Creazione e gestione delle istanze, e crea un database.
Quando disponi dell'istanza e del database, concedi l'autorizzazione di accesso al database all'account di servizio Google Cloud che rappresenta l'estensione. Per saperne di più sul ruolo da utilizzare, consulta Ruoli di Cloud Spanner. Per saperne di più sul controllo dell'accesso di Cloud Spanner, consulta Applicazione dei ruoli IAM e Controllo dell'accesso per Cloud Spanner.
Se hai un account di servizio che dispone dell'autorizzazione per il livello di accesso al tuo database che preferisci, utilizza la console di Google Cloud per generare una chiave per l'account di servizio. Quando configuri questa estensione, utilizza i contenuti del file JSON della chiave risultante.
Utilizza i contenuti del file JSON della chiave risultante durante l'aggiunta e la configurazione dell'estensione utilizzando il riferimento di configurazione.
Informazioni su Cloud Spanner
Cloud Spanner è un servizio di database relazionale utile per dati relazionali, strutturati e semistrutturati che richiedono alta disponibilità, elevata coerenza e letture e scritture transazionali.
Se hai appena iniziato a utilizzare Cloud Spanner, la guida rapida nella documentazione di Cloud Spanner è un buon punto di partenza.
Samples
Gli esempi seguenti mostrano come configurare il supporto per le azioni dell'estensione Cloud Spanner utilizzando i criteri estensioneCallout.
Aggiungi dati
Nell'esempio seguente, l'azione insert
dell'estensione aggiunge un nuovo utente alla tabella degli utenti.
<?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>
Recupero dati
In questo esempio, una query recupera i valori relativi a nome utente e indirizzo email dalla tabella user
.
Innanzitutto, un criterioAssignMessage assegna una variabile postal.code.value
da utilizzare in una clausola WHERE di query. Ecco un esempio. È probabile che il criterio imposti il valore in base ai parametri delle richieste del client.
<?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>
I seguenti criteri ExtensionCallout eseguono una query sul database, utilizzando i contenuti della variabile postal.code.value
nella clausola 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>
Il seguente criterio AttributionMessage utilizza quindi la risposta dell'estensione, archiviata nella variabile spanner.userdata.retrieved
, come risposta restituita al client.
<?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>
In questo esempio, i dati della risposta vengono restituiti come JSON, come il seguente.
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
Aggiorna dati
In questo esempio, l'elemento <Input>
contiene username
, la chiave primaria della tabella, e un nuovo valore per la colonna 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>
Azioni
insert
Inserisce le righe specificate nel database.
Sintassi
<Action>insert</Action>
<Input><![CDATA[{
"tableName" : "table-to-insert-into",
"rows" : "rows-to-insert"
}]]></Input>
Esempio
Nell'esempio seguente, l'azione insert
dell'estensione aggiunge un nuovo utente alla tabella degli utenti. Viene aggiunta una riga.
<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>
Parametri richiesta
Parametro | Descrizione | Tipo | Predefinito | Obbligatorie |
---|---|---|---|---|
tableName | La tabella del database in cui devono essere inserite le righe. | Stringa | Nessuna. | Sì. |
righe | Le righe da inserire espresse come array in un oggetto JSON rows . |
Array | Nessuna. | Sì. |
Risposta
Nessuna.
querySQL
Esegue una query sul database utilizzando l'istruzione SQL con i parametri specificati. I parametri vengono forniti nell'istruzione SQL con nomi @preposti; i valori dei parametri sono specificati nel parametro params
di questa azione.
Per maggiori dettagli sulla sintassi delle query di Cloud Spanner, consulta Sintassi delle query.
Sintassi
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "sql-query-statement",
"params" : {
"param1" : "columnValue"
}
}]]></Input>
Esempio
In questo esempio, una query recupera i valori delle colonne username
e email
dalla tabella user
. L'istruzione SQL specifica un parametro postalCode
impostato dalla variabile di flusso postal.code.value
.
<Action>querySQL</Action>
<Input><![CDATA[{
"sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
"params" : {
"postalCode" : "{postal.code.value}"
}
}]]></Input>
Parametri richiesta
Parametro | Descrizione | Tipo | Predefinito | Obbligatorie |
---|---|---|---|---|
sql | La query SQL da eseguire. Puoi specificare i parametri con nomi di parametri @preposti. Questi nomi di parametri devono corrispondere alle chiavi nel parametro params di questa azione. |
Stringa | Nessuna. | Sì. |
params | Un oggetto le cui chiavi e valori corrispondono ai nomi e ai valori dei parametri utilizzati nella query SQL. Puoi elencare più parametri qui. | Oggetto | Nessuna. | N. |
Risposta
Un oggetto rows
contenente un array di coppie nome-valore restituite dalla query. Ad esempio:
{
"rows": [
{
"username": "freewill444",
"email": "freewill@example.com"
}
]
}
update
Aggiorna le righe del database con i dati specificati.
Sintassi
<Input><![CDATA[{
"tableName" : "table-with-rows-to-update",
"rows" : "rows-to-update"
}]]></Input>
Esempio
In questo esempio, l'indirizzo email dell'utente il cui username
è Liz456 viene aggiornato con un nuovo valore. È stata aggiornata una riga.
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
Parametri richiesta
Parametro | Descrizione | Tipo | Predefinito | Obbligatorie |
---|---|---|---|---|
tableName | La tabella nel database in cui devono essere aggiornate le righe. | Stringa | Nessuna. | Sì. |
righe | Un array di dati delle righe da aggiornare. Ogni entità dell'array deve contenere l'ID univoco (ad es. chiave primaria) del valore della riga da aggiornare. | Array | Nessuna. | Sì. |
Risposta
Nessuna.
Riferimento per la configurazione
Utilizza quanto segue durante la configurazione e il deployment di questa estensione per l'utilizzo nei proxy API. Per i passaggi per configurare un'estensione utilizzando la console Apigee, consulta Aggiungere e configurare un'estensione.
Proprietà delle estensioni comuni
Per ogni estensione sono presenti le seguenti proprietà.
Proprietà | Descrizione | Predefinito | Obbligatorio |
---|---|---|---|
name |
Il nome che assegni a questa configurazione dell'estensione. | Nessuno | Sì |
packageName |
Nome del pacchetto dell'estensione fornito da Apigee Edge. | Nessuno | Sì |
version |
Numero di versione del pacchetto dell'estensione da cui stai configurando un'estensione. | Nessuno | Sì |
configuration |
Valore di configurazione specifico per l'estensione che stai aggiungendo. Vedi Proprietà per questo pacchetto di estensioni | Nessuno | Sì |
Proprietà per questo pacchetto di estensioni
Specifica i valori per le seguenti proprietà di configurazione specifiche di questa estensione.
Proprietà | Descrizione | Predefinito | Obbligatorie |
---|---|---|---|
projectId | ID del progetto Google Cloud contenente il database. | Nessuna. | Sì. |
instanceId | ID dell'istanza Cloud Spanner nel progetto Google Cloud. | Nessuna. | Sì. |
databaseId | ID del database Cloud Spanner. | Nessuna. | Sì. |
credenziali | Una volta inseriti nella console Apigee Edge, questi saranno i contenuti del file della chiave dell'account di servizio. Quando viene inviato tramite l'API di gestione, si tratta di un valore con codifica Base64 generato dal file della chiave dell'account di servizio. | Nessuna. | Sì. |