websocket-upgrade

Utilisez la stratégie websocket-upgrade pour traiter les demandes et les réponses d'API via une connexion WebSocket .

Prise en charge des passerelles

Tableau 1. Tableau indiquant les passerelles prenant en charge cette politique, ainsi que la version correspondante de la politique
Passerelle Version de la stratégie
DataPower® API Gateway 2.0.0

Cette rubrique explique comment configurer la stratégie dans votre source OpenAPI; pour plus de détails sur la configuration de la stratégie dans l'interface utilisateur de l'assembly, consultez la section Mise à niveau de WebSocket.

Le format de la règle websocket-upgrade est le suivant:
- 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
        .
        .
        .

Propriétés

Tableau 2. websocket-upgrade propriétés de la police
Propriété Obligatoire Descriptif Type de données
version Oui Numéro de version de la stratégie. chaîne
title Non Titre de la stratégie. chaîne
description Non Description de la stratégie. chaîne
target-url Oui Indiquez l'URL à appeler. chaîne
tls-profile Non Indique un profil TLS à utiliser pour sécuriser la transmission de données. chaîne
timeout Non Délai avant le retour d'une réponse du noeud final (en secondes).

La valeur par défaut est 60.

entier
follow-redirects Non Spécifie le comportement si le serveur back-end renvoie le code d'état HTTP 301 Moved Permanently. Si cette propriété est définie sur true, la stratégie invoke suit la redirection d'URL en envoyant un appel supplémentaire à l'URL spécifiée dans l'en-tête Location de la réponse. Si la propriété est définie sur false, la stratégie invoke sauvegarde le code de statut 301 et l'appel API est considéré comme terminé.
Remarque: La propriété follow-redirect est prise en charge uniquement par DataPower API Gateway. Si vous utilisez le DataPower Gateway (v5 compatible), le suit invoke toujours la redirection URL; la proxy (non prise en charge par le DataPower API Gateway) enregistre le 301 et effectue l'appel API sans suivre la redirection URL.
booléen
username Non Nom d'utilisateur à utiliser pour l'authentification HTTP de base. chaîne
password Non Mot de passe à utiliser pour l'authentification HTTP de base. chaîne
inject-proxy-headers Non Lorsque cette propriété est définie sur true, la stratégie invoke injecte les en-têtes X-Forwarded-For, X-Forwarded-To, X-Forwarded-Host et X-Forwarded-Proto dans la demande qui est envoyée à l'URL cible target-url.

La valeur par défaut est false.

booléen
decode-request-params Non Lorsque cette propriété est définie sur true, tout paramètre de demande référencé par une définition de variable sur l'URL cible target-url de la stratégie invoke est décodé par l'URL.

La valeur par défaut est false.

booléen
encode-plus-char Non Lorsque cette propriété est définie sur true, tous les caractères "+" inclus dans les valeurs de paramètre de requête de l'URL cible target-url sont codés en %2F.

La valeur par défaut est false.

booléen
header-control:
  type
  values
Non Spécifie dans message.headers les en-têtes que vous voulez copier dans l'URL cible.

Si la propriété type est définie sur blocklist, la propriété values répertorie les en-têtes que vous ne souhaitez pas copier. Si la propriété values est vide, tous les en-têtes sont copiés.

Si la propriété type est définie sur allowlist, la propriété values répertorie les en-têtes que vous voulez copier.

Les éléments répertoriés dans la propriété values sont au format d'expression régulière. Les valeurs ne sont pas sensibles à la casse. La valeur par défaut de la propriété header-control est
header-control:
  type: blocklist
  values: []

Voir Exemples de contrôle d'en-tête

objet
parameter-control:
  type
  values
Non Spécifie dans la demande entrante les paramètres que vous souhaitez copier dans l'URL cible.

Si la propriété type est définie sur blocklist, la propriété values répertorie les paramètres que vous ne souhaitez pas copier.

Si la propriété type est définie sur allowlist, la propriété values répertorie les paramètres que vous voulez copier. Si la propriété values est vide, aucun paramètre n'est copié.

Les éléments répertoriés dans la propriété values sont au format d'expression régulière. Les valeurs ne sont pas sensibles à la casse. La valeur par défaut de la propriété parameter-control est
parameter-control:
  type: allowlist
  values: []

Voir exemples de contrôle de paramètre

objet
request-assembly:
  execute
     .
     .
     .
    policy assembly
     .
     .
     .
Non Assemblage de traitement des demandes. Pour plus de détails sur la configuration d'un assemblage dans la section execute , voir execute. objet
response-assembly:
  execute
     .
     .
     .
    policy assembly
     .
     .
     .
Non Assemblage de traitement de la réponse. Pour plus de détails sur la configuration d'un assemblage dans la section execute , voir execute. objet

Exemple

- 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

Exemplesheader-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$

Exemplesparameter-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$