Aggiunta di risposte scorte come backend gateway API

Scopri come definire un percorso per un back-end di risposta alle azioni con API Gateway.

È spesso consigliabile verificare che un'API sia stata distribuita correttamente in un gateway API senza dover impostare un servizio backend effettivo. Un approccio consiste nel definire un instradamento nella specifica di distribuzione API che ha un percorso verso un backend 'fittizio'. Alla ricezione di una richiesta per tale percorso, il gateway API stesso funge da back-end e restituisce una risposta stock specificata.

Allo stesso modo, ci sono alcune situazioni in una distribuzione di produzione in cui vorrai un percorso particolare per un percorso per restituire costantemente la stessa risposta delle scorte senza inviare una richiesta a un back-end. Ad esempio, quando si desidera che una chiamata a un percorso restituisca sempre un codice di stato HTTP specifico nella risposta.

Utilizzando il servizio API Gateway, è possibile definire un percorso a un back-end di risposta stock che restituisce sempre lo stesso:

  • Codice stato HTTP
  • Campi di intestazione HTTP (coppie nome-valore)
  • contenuto nel corpo della risposta

Tenere presenti le seguenti limitazioni durante la definizione delle risposte alle azioni e dei back-end di risposta alle azioni:

  • ogni nome intestazione non deve superare 1 KB di lunghezza
  • ogni valore di intestazione non deve superare 4 KB di lunghezza
  • ogni risposta del corpo non deve superare i 5 KB di lunghezza (inclusa qualsiasi codifica)
  • una definizione backend di risposta alle azioni non deve includere più di 50 campi di intestazione

È possibile aggiungere back-end di risposta stock a una specifica di distribuzione API effettuando le operazioni riportate di seguito.

  • utilizzo di Console
  • modifica di un file JSON

Utilizzo della console per aggiungere risposte scorte a una specifica di distribuzione API

Per aggiungere risposte stock a una specifica di distribuzione API utilizzando la console, procedere come segue.

  1. Creare o aggiornare una distribuzione API utilizzando la console, selezionare l'opzione Da zero e immettere i dettagli nella pagina Informazioni di base.

    Per ulteriori informazioni, vedere Distribuzione di un'interfaccia API in un gateway API mediante la creazione di una distribuzione API e Aggiornamento di un gateway API o di una distribuzione API.

  2. Nella pagina Autenticazione specificare le opzioni di autenticazione.

    Per ulteriori informazioni sulle opzioni di autenticazione, vedere Aggiunta di autenticazione e autorizzazione alle distribuzioni API.

  3. Nella pagina Cicli creare un nuovo instradamento e specificare:

    • Percorso: un percorso per le chiamate API che utilizzano i metodi elencati per il servizio backend. Tenere presente che il percorso di instradamento specificato è il seguente:

    • Metodi: uno o più metodi accettati dal servizio backend. Ad esempio, GET, PUT.
    • Aggiungere un backend singolo o Aggiungere più backend: indica se instradare tutte le richieste allo stesso backend o instradare le richieste a backend diversi in base alla variabile di contesto e alle regole immesse.

      Queste istruzioni presuppongono di voler utilizzare un singolo backend, quindi selezionare Aggiungi un backend singolo. In alternativa, se si desidera utilizzare backend diversi, selezionare Aggiungi più backend e seguire le istruzioni in Utilizzo della console per aggiungere la selezione backend dinamica a una specifica di distribuzione API.

    • Tipo backend: il tipo di servizio backend è Stock Response.
    • Codice stato: qualsiasi codice di risposta HTTP valido. ad esempio 200
    • Corpo: specifica facoltativamente il contenuto del corpo della risposta, in un formato appropriato. Ad esempio:

      • Se si specificano rispettivamente Nome intestazione e Valore intestazione di Content-Type e text/plain, il corpo della risposta potrebbe essere "Hello world".
      • Se si specificano rispettivamente Nome intestazione e Valore intestazione di Content-Type e application/json, il corpo della risposta potrebbe essere {"username": "john.doe"}.

      Si noti che il corpo della risposta non deve superare i 5 KB di lunghezza (inclusa qualsiasi codifica).

    • Nome intestazione e Valore intestazione: è possibile specificare il nome di un'intestazione di risposta HTTP e il relativo valore. Ad esempio, il nome Content-Type e il valore application/json. È possibile specificare più coppie nome intestazione-valore (fino a un massimo di 50). Si noti che in ogni caso:

      • il nome dell'intestazione non deve superare 1 KB di lunghezza
      • il valore dell'intestazione non deve superare i 4 KB di lunghezza

    In questo esempio, una richiesta al percorso /test restituisce un codice di stato 200 e un payload JSON nel corpo della risposta.

    Campo : Immettere:
    Percorso: /test
    Metodi: GET
    Tipo di backend: Stock Response
    Codice di stato: 200
    Corpo: {"username": "john.doe"}
    Nome intestazione: Content-Type
    Valore intestazione: application/json

    In questo esempio, una richiesta al percorso /test-redirect restituisce un codice di stato 302 e un URL temporaneo nell'intestazione Location della risposta.

    Campo : Immettere:
    Percorso: /test-redirect
    Metodi: GET
    Tipo di backend: Stock Response
    Codice di stato: 302
    Corpo: n/a
    Nome intestazione: Location
    Valore intestazione: http://www.example.com
  4. (Facoltativo) Fare clic su Altro instradamento per immettere i dettagli degli instradamenti aggiuntivi.
  5. Fare clic su Successivo per esaminare i dettagli immessi per la distribuzione API.
  6. Fare clic su Crea o su Salva modifiche per creare o aggiornare la distribuzione API.
  7. (Facoltativo) Confermare che l'interfaccia API sia stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita in un gateway API).

Modifica di un file JSON per aggiungere risposte scorte a una specifica di distribuzione API

Per aggiungere risposte stock a una specifica di distribuzione API in un file JSON, procedere come segue. 

  1. Utilizzando l'editor JSON preferito, modificare la specifica di distribuzione API esistente alla quale si desidera aggiungere un back-end di risposta stock o creare una nuova specifica di distribuzione API (vedere Creazione di una specifica di distribuzione API).

    Ad esempio, la seguente specifica di distribuzione API di base definisce una semplice funzione serverless Hello World in Funzioni OCI come un singolo backend:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Nella sezione routes, includere una nuova sezione path per un back-end di risposta stock:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        },
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "STOCK_RESPONSE_BACKEND",
            "status": <http-response-code>,
            "headers": [{
              "name": "<header-name>",
              "value": "<header-value>"
            }],
            "body": "<body-content>"
          }
        }
      ]
    }

    dove:

    • <api-route-path> specifica un percorso per le chiamate API utilizzando i metodi elencati per il back-end di risposta stock. Tenere presente che il percorso di instradamento specificato è il seguente:

    • <method-list> specifica uno o più metodi accettati dal back-end di risposta stock, separati da virgole. Ad esempio, "GET, PUT".
    • "type": "STOCK_RESPONSE_BACKEND" indica che il gateway API stesso fungerà da backend e restituirà la risposta stock definita (il codice di stato, i campi intestazione e il contenuto del corpo).
    • <http-response-code> è un codice di risposta HTTP valido. ad esempio 200
    • "name": "<header-name>", "value": "<header-value>" specifica facoltativamente il nome di un'intestazione di risposta HTTP e il relativo valore. Ad esempio, "name": "Content-Type", "value":"application/json" . È possibile specificare più coppie "name": "<header-name>", "value": "<header-value>" nella sezione headers: (fino a un massimo di 50). Si noti che in ogni caso:
      • <header-name> non deve superare 1 KB di lunghezza
      • <header-value> non deve superare i 4 KB di lunghezza
    • "body": "<body-content>" specifica facoltativamente il contenuto del corpo della risposta in un formato appropriato. Ad esempio:
      • Se l'intestazione Content-Type è text/plain, il corpo della risposta potrebbe essere "body": "Hello world".
      • Se l'intestazione Content-Type è application/json, il corpo della risposta potrebbe essere "body": "{\"username\": \"john.doe\"}". Nel caso di una risposta JSON, tenere presente che le virgolette nella risposta devono essere precedute da una barra rovesciata (\).

      Si noti che <body-content> non deve superare i 5 KB di lunghezza (inclusa qualsiasi codifica).

    In questo esempio, una richiesta al percorso /test restituisce un codice di stato 200 e un payload JSON nel corpo della risposta.

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        },
        {
          "path": "/test",
          "methods": ["GET"],
          "backend": {
            "type": "STOCK_RESPONSE_BACKEND",
            "status": 200,
            "headers": [{
              "name": "Content-Type",
              "value": "application/json"
            }],
            "body" : "{\"username\": \"john.doe\"}"
          }
        }
      ]
    }

    In questo esempio, una richiesta al percorso /test-redirect restituisce un codice di stato 302 e un URL temporaneo nell'intestazione Location della risposta. In questo esempio viene inoltre dimostrato che è possibile creare una specifica di distribuzione API con un solo instradamento a un backend di tipo STOCK_RESPONSE_BACKEND.

    {
      "routes": [
        {
          "path": "/test-redirect",
          "methods": ["GET"],
          "backend": {
            "type": "STOCK_RESPONSE_BACKEND",
            "status": 302,
            "headers": [{
              "name": "Location",
              "value": "http://www.example.com"
            }]
          }
        }
      ]
    }
  3. Salvare il file JSON contenente la specifica di distribuzione API.
  4. Utilizzare la specifica di distribuzione API quando si crea o si aggiorna una distribuzione API nei modi riportati di seguito.

    • specificando il file JSON nella console quando si seleziona l'opzione Carica un'interfaccia API esistente
    • specificando il file JSON in una richiesta all'API REST del gateway API

    Per ulteriori informazioni, vedere Distribuzione di un'interfaccia API in un gateway API mediante la creazione di una distribuzione API e Aggiornamento di un gateway API o di una distribuzione API.

  5. (Facoltativo) Confermare che l'interfaccia API sia stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita in un gateway API).