websocket-upgrade

Verwenden Sie die websocket-upgrade -Richtlinie, um API-Anforderungen und -Antworten über eine WebSocket -Verbindung zu verarbeiten.

Gateway-Unterstützung

Tabelle 1. Tabelle, in der angegeben wird, welche Gateways diese Richtlinie unterstützen, sowie die entsprechende Richtlinienversion
Gateway Richtlinienversion
DataPower® API Gateway 2.0.0

In diesem Abschnitt wird beschrieben, wie Sie die Richtlinie in Ihrer OpenAPI -Quelle konfigurieren können. Details zur Konfiguration der Richtlinie in der Assembly-Benutzerschnittstelle finden Sie unter Websocket Upgrade.

Die Richtlinie websocket-upgrade hat das folgende Format:
- websocket-upgrade:
  version: version
  title: title
  description: description
  target-url: URL_of_target_API
  tls-profile: TLS_profile_to_be_used
  timeout: timeout_value_in_seconds
  follow-redirects: redirect_behavior_on_301_error
  username: username_if_authentication_required
  password: password_if_authentication_required
  inject-proxy-headers: are_proxy_headers_sent_to_target_url
  decode-request-params: are_request_parameters_decoded
  encode-plus-char: are_plus_characters_encoded
  header-control:
        .
        .
        .
    headers_to_copy_to_target_url
        .
        .
        .
  parameter-control:
        .
        .
        .
    parameters_to_copy_to_target_url
        .
        .
        .

Eigenschaften

Tabelle 2. websocket-upgrade Richtlinieneigenschaften
Eigenschaft Erforderlich Beschreibung Datentyp
version Ja Die Versionsnummer der Richtlinie. Zeichenfolge
title Nein Der Titel der Richtlinie. Zeichenfolge
description Nein Eine Beschreibung der Richtlinie. Zeichenfolge
target-url Ja Geben Sie die URL an, die aufgerufen werden soll. Zeichenfolge
tls-profile Nein Gibt ein TLS-Profil für die sichere Übertragung von Daten an. Zeichenfolge
timeout Nein Die Zeit, die vor einer Rückantwort vom Endpunkt gewartet werden soll (in Sekunden).

Der Standardwert ist 60.

ganze Zahl
follow-redirects Nein Gibt das Verhalten an, wenn der Back-End-Server den HTTP -Statuscode 301 Moved Permanently zurückgibt. Wenn diese Eigenschaft auf true gesetzt ist, folgt die invoke-Richtlinie der URL-Umleitung, indem sie einen weiteren Aufruf an die URL, die im Location-Header der Antwort angegeben ist, ausführt. Wenn diese Eigenschaft auf false gesetzt ist, speichert invoke den 301-Statuscode und der API-Aufruf wird als vollständig angesehen.
Hinweis Die Eigenschaft follow-redirect wird nur vom DataPower API Gatewayunterstützt. Wenn Sie DataPower Gateway (v5 compatible) verwenden, folgt invoke immer der Umleitung von URL ; die proxy richtlinie (wird von DataPower API Gateway nicht unterstützt) speichert den 301 -Statuscode und schließt den API-Aufruf ab, ohne der URL -Umleitung zu folgen.
boolesch
username Nein Der Benutzername für die HTTP-Basisauthentifizierung. Zeichenfolge
password Nein Das Kennwort für die HTTP-Basisauthentifizierung. Zeichenfolge
inject-proxy-headers Nein Wenn diese Option auf "true" gesetzt ist, fügt die invoke-Richtlinie die X-Forwarded-For-, X-Forwarded-To-, X-Forwarded-Host- und X-Forwarded-Proto-Header in die Anforderung ein, die an die target-url gesendet wird.

Der Standardwert ist false.

boolesch
decode-request-params Nein Wenn der Wert "true" festgelegt wird, werden alle Anforderungsparameter, auf die von einer Variablendefinition in der target-url der invoke-Richtlinie verwiesen wird, URL-entschlüsselt.

Der Standardwert ist false.

boolesch
encode-plus-char Nein Wenn der Wert "true" festgelegt wird, werden alle "+"-Zeichen in den Abfrageparameterwerden der target-url als "%2F" verschlüsselt.

Der Standardwert ist false.

boolesch
header-control:
  type
  values
Nein Gibt die Header in message.headers an, die in die Ziel-URL kopiert werden sollen.

Wenn die Eigenschaft type auf blocklist gesetzt ist, listet die Eigenschaft values die Header auf, die nicht kopiert werden sollen. Ist die Eigenschaft values leer, werden alle Header kopiert.

Wenn die Eigenschaft type auf allowlist gesetzt ist, listet die Eigenschaft values die Header auf, die kopiert werden sollen.

Die in der Eigenschaft values aufgelisteten Elemente haben das Format eines regulären Ausdrucks. Die Werte erfordern keine Beachtung der Groß-/Kleinschreibung. Der Standardwert der Eigenschaft header-control ist
header-control:
  type: blocklist
  values: []

Siehe Beispiele für Headersteuerung .

Objekt
parameter-control:
  type
  values
Nein Gibt die Parameter in der eingehenden Anforderung an, die in die Ziel-URL kopiert werden sollen.

Wenn die Eigenschaft type auf blocklist gesetzt ist, listet die Eigenschaft values die Parameter auf, die nicht kopiert werden sollen.

Wenn die Eigenschaft type auf allowlist gesetzt ist, listet die Eigenschaft values die Parameter auf, die kopiert werden sollen. Ist die Eigenschaft values leer, werden keine Parameter kopiert.

Die in der Eigenschaft values aufgelisteten Elemente haben das Format eines regulären Ausdrucks. Die Werte erfordern keine Beachtung der Groß-/Kleinschreibung. Der Standardwert der Eigenschaft parameter-control ist
parameter-control:
  type: allowlist
  values: []

Siehe Beispiele für Parametersteuerung .

Objekt
request-assembly:
  execute
     .
     .
     .
    policy assembly
     .
     .
     .
Nein Die Anforderungsverarbeitungsassembly. Details zum Konfigurieren einer Assembly im Abschnitt execute finden Sie unter execute. Objekt
response-assembly:
  execute
     .
     .
     .
    policy assembly
     .
     .
     .
Nein Die Antwortverarbeitungsassembly. Details zum Konfigurieren einer Assembly im Abschnitt execute finden Sie unter execute. Objekt

Beispiel

- websocket-upgrade:
  version: 2.0.0
  title: websocket-upgrade
  timeout: 60
  target-url: 'https://my.websocket.upgrade.com'
  secure-gateway: false
  follow-redirects: true
  inject-proxy-headers: true
  decode-request-params: false
  encode-plus-char: true
  response-assembly:
    execute:
      - parse:
          version: 2.0.0
          title: parse
          parse-settings-reference:
            default: apic-default-parsesettings
          description: Parse the response from the backend server

Beispiele für header-control

# copy all headers to the target URL

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: blocklist
      values: []
# copy all headers except X-Client-ID and Content-Type

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: allowlist
      values:
        - ^X-Client-ID$
        - ^Content-Type$
# copy no headers

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: allowlist
      values: []
# copy only the Content-Type header

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: allowlist
      values:
        - ^Content-Type$

Beispiele für parameter-control

# copy no request parameters to the target URL

- invoke:
    target-url: http://myhost/path?storeid=3
    parameter-control:
      type: allowlist
      values: []
# append the petid parameter to the target URL
# if the incoming request is http://apigw/org/sandbox/petstore/base?petid=100&display=detailed, 
# the target URL at runtime will be http://myhost/mypath?storeid=3&petid=100

- invoke:
    target-url: http://myhost/path?storeid=3
    parameter-control:
      type: allowlist
      values:
        - ^petid$