Cloud Endpoints accetta un insieme di estensioni specifiche di Google per OpenAPI che configurano i comportamenti Extensible Service Proxy (ESP) e Service Control. In questa pagina vengono descritti i prodotti Google: estensioni specifiche Specifica OpenAPI.
Sebbene gli esempi riportati di seguito siano in formato YAML, è supportato anche JSON.
Convenzione di denominazione
Le estensioni Google OpenAPI hanno nomi che iniziano con il prefisso x-google-
.
x-google-allow
x-google-allow: [configured | all]
Questa estensione viene utilizzata a livello superiore di una specifica OpenAPI per indicare quali percorsi URL devono essere consentiti tramite ESP.
I valori possibili sono configured
e all
.
Il valore predefinito è configured
, il che significa che solo i metodi API che
che hai elencato nella tua specifica OpenAPI
vengono pubblicati
ESP.
Quando viene utilizzato all
, le chiamate non configurate, con o senza chiave API o autenticazione utente, passano attraverso ESP alla tua API.
ESP elabora le chiamate alla tua API facendo distinzione tra maiuscole e minuscole.
Ad esempio, ESP considera /widgets
e /Widgets
come
diversi metodi dell'API.
Quando utilizzi all
, devi prestare particolare attenzione in due aree:
- Qualsiasi chiave API o regole di autenticazione.
- Il routing del percorso del backend nel servizio.
Come best practice, ti consigliamo di configurare l'API in modo da utilizzare il routing dei percorsi sensibili alle maiuscole. Utilizzando il routing sensibile alle maiuscole, l'API restituisce
un codice di stato HTTP 404
quando il metodo richiesto nell'URL
corrisponda al nome del metodo API indicato nella specifica OpenAPI. Tieni presente
che i framework per applicazioni web come Node.js Express hanno un'impostazione per attivare o disattivare il routing sensibile alle maiuscole. Il comportamento predefinito dipende
il framework che stai utilizzando. Ti consigliamo di rivedere le impostazioni del tuo framework per assicurarti che il routing sensibile alle maiuscole sia abilitato. Questo
è conforme alla specifica OpenAPI v2.0
con la dicitura: "Tutti i nomi dei campi nella specifica sono sensibili alle maiuscole".
Esempio
Supponiamo che:
- L'opzione
x-google-allow
è impostata suall
. - Il metodo API
widgets
è elencato nella tua specifica OpenAPI, ma nonWidgets
. - Hai configurato la specifica OpenAPI in modo che richieda una chiave API.
Poiché widgets
è elencato nella tua specifica OpenAPI, ESP
blocca la seguente richiesta perché non ha una chiave API:
https://my-project-id.appspot.com/widgets
Poiché Widgets
non è elencato nella specifica OpenAPI, ESP gira la seguente richiesta al tuo servizio senza una chiave API:
https://my-project-id.appspot.com/Widgets/
Se l'API utilizza il routing sensibile alle maiuscole (e non hai instradato le chiamate
a "Widget" a qualsiasi codice), il backend dell'API restituisce 404
. Se, tuttavia,
utilizzi il routing senza distinzione tra maiuscole e minuscole, il backend dell'API instrada questa chiamata a
"widget".
Linguaggio e framework diversi hanno metodi differenti per controllare la distinzione tra maiuscole e minuscole e il routing. Per maggiori dettagli, consulta la documentazione del tuo framework.
x-google-backend
L'estensione x-google-backend
specifica come instradare le richieste
a backend locali o remoti. L'estensione può essere specificata a livello superiore e/o a livello di operazione di una specifica OpenAPI.
Per impostazione predefinita, ESP è configurato per eseguire il proxy di tutto il traffico a un singolo
il backend locale. L'indirizzo del backend locale è specificato dal --backend
flag
(il valore predefinito è http://127.0.0.1:8081
). Puoi utilizzare l'estensione x-google-backend
per ignorare questo comportamento predefinito e specificare uno o più
backend locali o remoti che possono ricevere richieste.
L'estensione x-google-backend
può anche configurare altre impostazioni per i backend locali e remoti, come l'autenticazione e i timeout. Tutte queste configurazioni possono essere applicate in base all'operazione.
L'estensione x-google-backend
contiene i seguenti campi:
address
address: URL
Facoltativo. L'URL del backend di destinazione.
Lo schema dell'indirizzo deve essere http
o https
.
Quando il routing avviene verso backend remoti (serverless), l'indirizzo deve essere impostato e la parte dello schema deve essere https
.
Se un'operazione utilizza x-google-backend
ma non specifica address
,
ESPv2 instraderà le richieste al backend locale specificato dal flag --backend
.
jwt_audience | disable_auth
Deve essere impostata solo una di queste due proprietà.
Se un'operazione utilizza x-google-backend
, ma non specifica jwt_audience
o disable_auth
, ESPv2 imposterà automaticamente jwt_audience
in modo che corrisponda a address
.
Se address
non è impostato, ESPv2 imposterà automaticamente disable_auth
su true
.
jwt_audience
jwt_audience: string
Facoltativo. Il segmento di pubblico JWT specificato quando ESPv2 ottiene un token ID istanza, che viene poi utilizzato per effettuare la richiesta di backend di destinazione.
Quando configuri Endpoints per serverless, il backend remoto deve essere
protetto per consentire solo il traffico da ESPv2. ESPv2
collegare un token ID istanza all'intestazione Authorization
quando si esegue il proxy delle richieste.
Il token ID istanza rappresenta l'account di servizio di runtime utilizzato per eseguire il deployment di ESPv2. Il backend remoto può quindi verificare che la richiesta provenga da
ESPv2 basato su questo token associato.
Ad esempio, un backend remoto di cui è stato eseguito il deployment su Cloud Run può utilizzare IAM per:
- Limita le invocazioni non autenticate revocando
roles/run.invoker
dal principaleallUsers
speciale. - Consenti solo a ESPv2 di invocare il backend concedendo il ruolo
roles/run.invoker
all'account di servizio di runtime ESPv2.
Per impostazione predefinita, ESPv2 crea il token ID istanza con
Segmento di pubblico JWT corrispondente al campo address
. La specifica manuale di jwt_audience
è obbligatoria solo quando il backend di destinazione utilizza l'autenticazione basata su JWT e il pubblico previsto è diverso dal valore specificato nel campo address
.
Per i backend remoti di cui è stato eseguito il deployment su App Engine o con IAP, devi eseguire l'override del pubblico JWT. App Engine e IAP utilizzano il proprio ID client OAuth come pubblico previsto.
Quando questa funzionalità è abilitata, ESPv2 modificherà le intestazioni nelle richieste.
Se per una richiesta è già impostata l'intestazione Authorization
, ESPv2:
- Copia il valore originale in una nuova intestazione
X-Forwarded-Authorization
. - Esegui l'override dell'intestazione
Authorization
con il token dell'ID istanza.
Pertanto, se un client API imposta l'intestazione Authorization
, un backend in esecuzione
dietro ESPv2 deve utilizzare l'intestazione Authorization
per recuperare l'intero JWT. Il backend deve
verificare il JWT in questa intestazione, poiché ESPv2 non eseguirà
verifica quando i metodi di autenticazione
non sono configurate.
disable_auth
disable_auth: bool
Facoltativo. Questa proprietà determina se ESPv2 deve impedire ottenere un token ID istanza e impedire di collegarlo alla richiesta.
Quando configuri il backend di destinazione, potresti non voler utilizzare IAP o IAM per Autenticare le richieste da ESPv2 se si applica una delle seguenti condizioni:
- Il backend deve consentire chiamate non autenticate.
- Il backend richiede l'intestazione
Authorization
originale del client API e non può utilizzareX-Forwarded-Authorization
(descritto nella sezionejwt_audience
).
In questo caso, imposta questo campo su true
.
path_translation
path_translation: [ APPEND_PATH_TO_ADDRESS | CONSTANT_ADDRESS ]
Facoltativo. Imposta la strategia di traduzione del percorso utilizzata da ESPv2 quando di richieste proxy al backend di destinazione.
Per ulteriori dettagli sulla traduzione dei percorsi, consulta la sezione Informazioni sulla traduzione dei percorsi.
Quando x-google-backend
viene utilizzato a livello superiore della specifica OpenAPI, path_translation
ha per impostazione predefinita il valore APPEND_PATH_TO_ADDRESS
e quando x-google-backend
viene utilizzato a livello di operazione della specifica OpenAPI, path_translation
ha per impostazione predefinita il valore CONSTANT_ADDRESS
. Se il campo address
è
mancante, il valore path_translation
non verrà specificato e non verrà eseguito.
deadline
deadline: double
Facoltativo. Il numero di secondi di attesa per una risposta completa da una richiesta.
Le risposte che richiedono più tempo rispetto alla scadenza configurata scadranno.
La scadenza predefinita è 15.0
secondi.
I valori non positivi non verranno rispettati. ESPv2 eseguirà automaticamente utilizza il valore predefinito in questi casi.
La scadenza non può essere disabilitata, ma può essere impostata su un numero alto
, ad esempio 3600.0
per un'ora.
protocol
protocol: [ http/1.1 | h2 ]
Facoltativo. Il protocollo utilizzato per inviare una richiesta al backend.
I valori supportati sono http/1.1
e h2
.
Il valore predefinito è http/1.1
per i backend HTTP e HTTPS.
Per i backend HTTP sicuri (https://) che supportano HTTP/2, imposta questo campo su h2
per migliorare le prestazioni. Questa è l'opzione consigliata
per i backend serverless di Google Cloud.
Abilitazione del supporto dei backend in ESP
ESPv2 rileverà automaticamente quando x-google-backend
è configurato.
ESP richiede una modifica alla configurazione manuale per attivare questa funzionalità.
Attiva il supporto di x-google-backend
in ESP specificando l'argomento --enable_backend_routing
quando esegui il container ESP.
Per i runtime in cui non hai il controllo del container ESP,
opzioni, questa opzione è già disponibile.) Di seguito è riportato un esempio
attivazione del supporto di x-google-backend
durante il deployment dell'ESP
il container su GKE (questo esempio si basa
Esempio di Tutorial sugli endpoint su GKE:
- name: esp image: gcr.io/endpoints-release/endpoints-runtime:1 args: [ "--http_port", "8081", "--service", "SERVICE_NAME", "--rollout_strategy", "managed", "--enable_backend_routing" ]
Informazioni sulla traduzione dei percorsi
Poiché l'ESP gestisce le richieste, prende il percorso della richiesta originale e lo traduce prima di effettuare una richiesta al backend di destinazione. Esattamente come questa traslazione dipende dalla strategia di traduzione del percorso che utilizzano. Esistono due strategie di traduzione dei percorsi:
APPEND_PATH_TO_ADDRESS
: il percorso della richiesta di backend di destinazione viene calcolato aggiungendo il percorso della richiesta originale all'URLaddress
dell'estensionex-google-backend
.CONSTANT_ADDRESS
: il percorso della richiesta di destinazione è costante, come definito dall'URLaddress
dell'estensionex-google-backend
. Se il percorso OpenAPI corrispondente contiene parametri, il nome del parametro e il relativo valore diventano parametri di query.
Esempi:
APPEND_PATH_TO_ADDRESS
address: https://my-project-id.appspot.com/BASE_PATH
- Con i parametri del percorso OpenAPI
- Percorso OpenAPI:
/hello/{name}
- Percorso richiesta:
/hello/world
- URL richiesta target:
https://my-project-id.appspot.com/BASE_PATH/hello/world
- Percorso OpenAPI:
- Senza parametri di percorso OpenAPI
- Percorso OpenAPI:
/hello
- Percorso richiesta:
/hello
- URL richiesta di destinazione:
https://my-project-id.appspot.com/BASE_PATH/hello
- Percorso OpenAPI:
CONSTANT_ADDRESS
address
:https://us-central1-my-project-id.cloudfunctions.net/helloGET
- Con parametri di percorso OpenAPI
- Percorso OpenAPI:
/hello/{name}
- Percorso richiesta:
/hello/world
- URL richiesta target:
https://us-central1-my-project-id.cloudfunctions.net/helloGET?name=world
- Percorso OpenAPI:
- Senza parametri di percorso OpenAPI
- Percorso OpenAPI:
/hello
- Percorso richiesta:
/hello
- URL richiesta target:
https://us-central1-my-project-id.cloudfunctions.net/helloGET
- Percorso OpenAPI:
x-google-endpoints
Questa sezione descrive gli utilizzi dell'estensione x-google-endpoints
.
Configurazione del DNS nel dominio cloud.goog
Se hai eseguito il deployment dell'applicazione in Compute Engine o Google Kubernetes Engine,
puoi creare una voce DNS per il servizio Endpoints sulla
cloud.goog
aggiungendo quanto segue al documento OpenAPI:
x-google-endpoints: - name: "API_NAME.endpoints.PROJECT_ID.cloud.goog" target: "IP_ADDRESS"
Aggiungi l'estensione x-google-endpoints
al livello superiore del documento OpenAPI
(non rientrato o nidificato). Devi configurare il nome di dominio nel formato:
.endpoints.PROJECT_ID.cloud.goog
Ad esempio:
swagger: "2.0" host: "my-cool-api.endpoints.my-project-id.cloud.goog" x-google-endpoints: - name: "my-cool-api.endpoints.my-project-id.cloud.goog" target: "192.0.2.1"
Il dominio .cloud.goog
è gestito da Google e condiviso dai clienti Google Cloud. Poiché gli ID progetto Google Cloud sono univoci a livello mondiale, un nome di dominio nel formato .endpoints.PROJECT_ID.cloud.goog
è un nome di dominio univoco per la tua API.
Per semplicità, configura il campo host
e il campo x-google-endpoints.name
in modo che siano uguali. Quando esegui il deployment del documento OpenAPI, Service Management
crea:
- Un servizio gestito con il nome che hai specificato nel campo
host
. - Un record A DNS che utilizza il nome e l'indirizzo IP configurati nell'estensione
x-google-endpoints
.
Per le API ospitate nell'ambiente flessibile di App Engine, puoi utilizzare il dominio appspot.com
. Per ulteriori informazioni, consulta Configurazione
Endpoint.
Configurazione di ESP per consentire le richieste CORS
Se l'API viene chiamata da un'applicazione web su un'origine diversa, L'API deve supportare la condivisione delle risorse tra origini (CORS). Consulta l'articolo Aggiungere una configurazione CORS assistenza per ESP per informazioni sulla configurazione di ESP per il supporto di CORS.
Se devi implementare il supporto CORS personalizzato nel codice di backend, imposta
allowCors: True
in modo che ESP passi tutte le richieste CORS a
il codice di backend:
x-google-endpoints: - name: "API_NAME.endpoints.PROJECT_ID.cloud.goog" allowCors: True
Aggiungi l'estensione x-google-endpoints
al livello superiore del documento OpenAPI
(non rientrato o nidificato), ad esempio:
swagger: "2.0" host: "my-cool-api.endpoints.my-project-id.cloud.goog" x-google-endpoints: - name: "my-cool-api.endpoints.my-project-id.cloud.goog" allowCors: True
x-google-issuer
x-google-issuer: URI | EMAIL_ADDRESS
Questa estensione viene utilizzata nella sezione securityDefinitions
di OpenAPI per specificare
l'emittente di una credenziale. I valori possono essere sotto forma di nome host o email
.
x-google-jwks_uri
x-google-jwks_uri: URI
URI della chiave pubblica del provider impostata per convalidare la firma del JSON Web Token.
ESP supporta due formati di chiave pubblica asimmetrica definiti
dall'estensione OpenAPI x-google-jwks_uri
:
-
Formato dell'insieme JWK.
Ad esempio:
x-google-jwks_uri: "https://YOUR_ACCOUNT_NAME.YOUR_AUTH_PROVIDER_URL/.well-known/jwks.json"
-
X509. Ad esempio:
x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com"
Se utilizzi un formato di chiave simmetrica, imposta x-google-jwks_uri
sull'URI di un file contenente la stringa della chiave codificata in base64url.
Se ometti x-google-jwks_uri
, l'ESP seguirà il protocollo OpenID Connect Discovery per rilevare automaticamente l'URI JWKS per il provider OpenID specificato.
ESP invierà una richiesta a x-google-issuer/.well-known/openid-configuration
,
analizzare la risposta JSON e leggere l'URI JWKS dal campo jwks_uri
di primo livello.
Tieni presente che l'omissione di x-google-jwks_uri
comporterà tempi di avvio a freddo più elevati, poiché
l'ESP deve effettuare un'altra chiamata remota all'avvio.
Pertanto, ti consigliamo di omettere questo campo solo se l'URI JWKS cambia spesso.
La maggior parte dei provider OpenID certificati (come Google, Auth0 e Okta) ha URI JWKS stabili.
x-google-jwt-locations
Per impostazione predefinita, un token JWT viene passato nell'intestazione Authorization
(con prefisso "Bearer "
), nell'intestazione X-Goog-Iap-Jwt-Assertion
o nel parametro di query access_token
. Per esempi su come passare un token JWT, consulta Effettuare una chiamata autenticata a un'API Endpoints.
In alternativa, utilizza l'estensione x-google-jwt-locations
nella sezione securityDefinitions di OpenAPI per fornire le posizioni personalizzate da cui estrarre il token JWT.
L'estensione x-google-jwt-locations
accetta un elenco di località JWT. Ogni posizione JWT contiene i seguenti campi:
Elemento | Descrizione |
---|---|
header/query |
Obbligatorio. Il nome dell'intestazione contenente il JWT o il nome del parametro di query contenente il JWT. |
value_prefix |
Facoltativo. Solo per l'intestazione. Se value_prefix è impostato, il suo valore deve corrispondere al prefisso del valore dell'intestazione contenente il JWT.
|
Ad esempio:
x-google-jwt-locations:
# Expect header "Authorization": "MyBearerToken <TOKEN>"
- header: "Authorization"
value_prefix: "MyBearerToken "
# expect header "jwt-header-foo": "jwt-prefix-foo<TOKEN>"
- header: "jwt-header-foo"
value_prefix: "jwt-prefix-foo"
# expect header "jwt-header-bar": "<TOKEN>"
- header: "jwt-header-bar"
# expect query parameter "jwt_query_bar=<TOKEN>"
- query: "jwt_query_bar"
Se vuoi supportare solo un sottoinsieme delle località JWT predefinite, elencale esplicitamente nell'estensione x-google-jwt-locations
. Ad esempio, per includere il supporto solo per l'intestazione Authorization
con il prefisso "Bearer "
:
x-google-jwt-locations:
# Support the default header "Authorization": "Bearer <TOKEN>"
- header: "Authorization"
value_prefix: "Bearer "
x-google-audiences
x-google-audiences: STRING
Questa estensione viene utilizzata nella sezione OpenAPI securityDefinitions
per fornire
un elenco di segmenti di pubblico a cui il campo JWT aud
deve corrispondere durante l'autenticazione JWT.
Questa estensione accetta una singola stringa con valori separati da una virgola. Spazi
non sono consentiti tra i segmenti di pubblico. Se non è specificato, il campo JWT aud
viene utilizzato.
deve corrispondere al campo host
nel documento OpenAPI a meno che il flag
--disable_jwt_audience_service_name_check
è in uso. Se il flag viene utilizzato ex-google-audiences
non è specificato, il campo JWT aud
non viene selezionato.
securityDefinitions: google_id_token: type: oauth2 authorizationUrl: "" flow: implicit x-google-issuer: "https://accounts.google.com" x-google-jwks_uri: "https://www.googleapis.com/oauth2/v1/certs" x-google-audiences: "848149964201.apps.googleusercontent.com,841077041629.apps.googleusercontent.com"
x-google-management
L'estensione x-google-management
controlla diversi aspetti dell'API
e contiene i campi descritti in questa sezione.
metrics
Utilizzi metrics
insieme a quota e x-google-quota
per configurare una quota per l'API. Una quota consente di controllare la frequenza con cui le applicazioni possono chiamare i metodi nell'API. Ad esempio:
x-google-management:
metrics:
- name: read-requests
displayName: Read requests
valueType: INT64
metricKind: DELTA
Il campo metrics
contiene un elenco con le seguenti coppie chiave-valore:
Elemento | Descrizione |
---|---|
nome | Obbligatorio. Il nome di questa metrica. In genere, si tratta del tipo di richiesta (ad es. "read-requests" o "write-requests") che identifica in modo univoco la metrica. |
displayName | Facoltativo, ma consigliato. Il testo visualizzato per identificare la metrica nella scheda Quote della pagina Endpoint > Servizi nella console Google Cloud. Questo testo viene mostrato anche ai consumatori della tua API su nelle pagine Quote in IAM e amministratore di rete e API e Servizi. Il nome visualizzato deve contenere al massimo 40 caratteri. Ai fini della leggibilità, l'unità della quota associata viene aggiunto automaticamente al nome visualizzato nella nella console Google Cloud. Ad esempio, se specifichi "Richieste di lettura" per il nome visualizzato, nella console Google Cloud viene visualizzato "Richieste di lettura al minuto per progetto". Se non specificato, "quota senza etichetta" viene mostrato all'utente consumer della tua API nelle pagine Quote in IAM e amministratore e API e Servizi. Per mantenere la coerenza con i nomi visualizzati dei servizi Google elencati nella pagina Quote che vedono gli utenti della tua API, consigliamo quanto segue per il nome visualizzato:
|
valueType | Obbligatorio. Deve essere INT64 |
metricKind | Obbligatorio. Deve essere DELTA |
quota
Specifica il limite della quota per una metrica definita nella sezione quota
. Ad esempio:
quota:
limits:
- name: read-requests-limit
metric: read-requests
unit: 1/min/{project}
values:
STANDARD: 5000
Il campo quota.limits
contiene un elenco con le seguenti coppie chiave-valore:
Elemento | Descrizione |
---|---|
nome | Obbligatorio. Nome del limite, che deve essere univoco all'interno del servizio può contenere lettere minuscole e maiuscole, numeri e "-" (il trattino carattere) e deve avere una lunghezza massima di 64 caratteri. |
metrica | Obbligatorio. Il nome della metrica a cui si applica questo limite. Questo nome deve corrispondono al testo specificato nel nome di una metrica. Se il testo specificato non corrisponde a un nome metrica, viene visualizzato un errore durante il deployment del documento OpenAPI. |
unità | Obbligatorio. L'unità del limite. Al momento è supportato solo il valore "1/min/{project}", il che significa che il limite viene applicato per progetto e l'utilizzo viene reimpostato ogni minuto. |
valori | Obbligatorio. Il limite per la metrica. Devi specificarlo come coppia chiave:valore nel seguente formato: STANDARD: YOUR-LIMIT-FOR-THE-METRIC YOUR-LIMIT-FOR-THE-METRIC con un valore intero corrispondente al numero massimo di richieste consentite per l'unità specificata (attualmente solo al minuto e per progetto). Ad esempio:values: STANDARD: 5000 |
x-google-quota
L'estensione x-google-quota
viene usata nella sezione OpenAPI paths
per
associare un metodo nell'API a una metrica. Metodi che non includono
A x-google-quota
definite non sono applicati limiti di quota. Ad esempio:
x-google-quota:
metricCosts:
read-requests: 1
L'estensione x-google-quota
contiene il seguente elemento:
Elemento | Descrizione |
---|---|
metricCosts | Una coppia chiave-valore definita dall'utente: "YOUR-METRIC-NAME": METRIC-COST .
|
Esempi di quota
L'esempio seguente mostra l'aggiunta di una metrica e di un limite per le richieste di lettura e richieste di scrittura.
x-google-management:
metrics:
# Define a metric for read requests.
- name: "read-requests"
displayName: "Read requests"
valueType: INT64
metricKind: DELTA
# Define a metric for write requests.
- name: "write-requests"
displayName: "Write requests"
valueType: INT64
metricKind: DELTA
quota:
limits:
# Rate limit for read requests.
- name: "read-requests-limit"
metric: "read-requests"
unit: "1/min/{project}"
values:
STANDARD: 5000
# Rate limit for write requests.
- name: "write-request-limit"
metric: "write-requests"
unit: "1/min/{project}"
values:
STANDARD: 5000
paths:
"/echo":
post:
description: "Echo back a given message."
operationId: "echo"
produces:
- "application/json"
responses:
200:
description: "Echo"
schema:
$ref: "#/definitions/echoMessage"
parameters:
- description: "Message to echo"
in: body
name: message
required: true
schema:
$ref: "#/definitions/echoMessage"
x-google-quota:
metricCosts:
read-requests: 1
security:
- api_key: []
x-google-api-name
Quando il servizio contiene una sola API, il nome dell'API corrisponde al nome del servizio Endpoints. (gli endpoint utilizzano il nome
specifichi nel campo host
del documento OpenAPI come nome del tuo
service.) Se il servizio contiene più di un'API, devi specificare l'API
aggiungendo l'estensione x-google-api-name
al documento OpenAPI. La
L'estensione x-google-api-name
ti consente di assegnare un nome esplicito alle singole API
per stabilire un controllo delle versioni indipendente per ogni API.
Ad esempio, puoi configurare un servizio denominato api.example.com
con due API,
producer e consumer, con i seguenti frammenti di documenti OpenAPI:
API Producer in
producer.yaml
:swagger: 2.0 host: api.example.com x-google-api-name: producer info: version: 1.0.3
API consumer in
consumer.yaml
:swagger: 2.0 host: api.example.com x-google-api-name: consumer info: version: 1.1.0
Puoi eseguire il deployment dei due documenti OpenAPI insieme a:
gcloud endpoints services deploy producer.yaml consumer.yaml