ParsePayload policy

Norme standard

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Il criterio ParsePayload estrae le operazioni logiche dai payload delle richieste strutturate (come JSON-RPC 2.0) nelle variabili del flusso di messaggi. Questa funzionalità consente all'amministratore proxy di implementare la logica di routing condizionale direttamente in base ai contenuti della richiesta del client anziché a percorsi di risorse o parametri di ricerca di base.

Queste norme sono estensibili e il loro utilizzo potrebbe avere implicazioni in termini di costi o di utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di policy e sulle implicazioni di utilizzo, consulta Tipi di policy.

Elemento <ParsePayload>

Specifica le proprietà di analisi della convalida applicate ai cicli di valutazione della logica dell'applicazione.

Obbligatorio? Obbligatorio
Elemento padre n/a
Elementi secondari <Source>
<PayloadType>
<Protocol>

Sintassi

L'elemento ParsePayload utilizza la seguente sintassi:

<ParsePayload continueOnError="[false|true]" enabled="[true|false]" name="policy_name">
    <Source>request</Source>
    <PayloadType>JSON-RPC-2.0</PayloadType>
    <Protocol>MCP</Protocol>
</ParsePayload>

Esempio

L'esempio seguente mostra una configurazione standard per la policy ParsePayload:

<ParsePayload continueOnError="false" enabled="true" name="parse-payload-mcp">
    <Source>request</Source>
    <PayloadType>JSON-RPC-2.0</PayloadType>
    <Protocol>MCP</Protocol>
</ParsePayload>

<Source>

Indica il contesto del contenitore di richiesta/risposta elaborato immediatamente tramite le valutazioni del runtime.

<Source>request</Source>
Attributo Descrizione Predefinito Presenza
N/D Valore del nodo di testo. Deve essere request o response. request Facoltativo

<PayloadType>

Regolano le strutture di valutazione complessive riconosciute in merito ai requisiti di trattamento dei dati.

<PayloadType>JSON-RPC-2.0</PayloadType>
Attributo Descrizione Predefinito Presenza
N/D Valore del nodo di testo. Valori supportati: JSON-RPC-2.0. N/D Obbligatorio

<Protocol>

Determina i comportamenti di formattazione corrispondenti esattamente alle dichiarazioni dell'interfaccia di destinazione.

<Protocol>MCP</Protocol>
Attributo Descrizione Predefinito Presenza
N/D Valore del nodo di testo. Valore supportato: MCP. N/D Obbligatorio

Variabili di flusso estratte

Le routine di post-parsing compilano le seguenti variabili di flusso predefinite in base al payload.

Nome variabile Descrizione
apigee.payload.operation Identificatore di esecuzione creato.
  • Per tools/call, è tools/call/{name} (ad es. tools/call/get_weather), che distingue lo strumento specifico richiamato.
  • Per tools/list, è tools/list, utilizzato quando si elencano gli strumenti disponibili senza scegliere un target specifico.
apigee.payload.json-rpc.request.method Il campo method della richiesta JSON-RPC (ad es. tools/call o tools/list).
apigee.payload.json-rpc.request.id Il campo id della richiesta JSON-RPC.
apigee.payload.json-rpc.request.params.name Il campo name all'interno di params (compilato per tools/call per identificare lo strumento).
apigee.payload.json-rpc.request.params.arguments.{arg_name} Argomenti passati nell'oggetto arguments. I valori stringa vengono archiviati direttamente; gli oggetti o gli array nidificati vengono archiviati come stringhe JSON serializzate.

Esempio

Per il seguente payload della richiesta JSON-RPC con argomenti semplici:

{
  "jsonrpc": "2.0",
  "id": "req_001",
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "location": "San Francisco, CA",
      "forecast_days": 3
    }
  }
}

Il criterio compila le seguenti variabili:

Variabile Valore
apigee.payload.operation tools/call/get_weather
apigee.payload.json-rpc.request.method tools/call
apigee.payload.json-rpc.request.id req_001
apigee.payload.json-rpc.request.params.name get_weather
apigee.payload.json-rpc.request.params.arguments.location San Francisco, CA
apigee.payload.json-rpc.request.params.arguments.forecast_days 3