RéécrirePlugin

Réécrit les demandes.

Capture d’écran d’une invite de commandes avec le proxy de développement réécritant une demande d’API entrante.

Exemple de configuration

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RewritePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "rewritePlugin"
    }
  ],
  "rewritePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.schema.json",
    "rewritesFile": "rewrites.json"
  }
}

Propriétés de configuration

Propriété Descriptif Par défaut
rewritesFile Chemin d’accès au fichier contenant des définitions de réécriture rewrites.json

Options de ligne de commande

Aucun(e)

Réécrire des exemples de fichiers

Voici des exemples de règles de réécriture.

Réécrire toutes les requêtes de HTTP vers HTTPS

Réécrire toutes les requêtes de HTTP vers HTTPS. Dans ce contexte, toutes les requêtes sont configurées avec le proxy de développement ou le rewritePlugin.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

Définir un en-tête de requête

Définissez l’en-tête Accept-Language sur toutes les requêtes https://api.contoso.comsur . Si la demande a déjà l’en-tête, le plug-in remplace sa valeur. Si l’en-tête est manquant, le plug-in l’ajoute. Étant donné que la règle ne spécifie pas d’URL de sortie , le plug-in ne modifie pas l’URL de la demande.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/"
      },
      "out": {
        "headers": [
          {
            "name": "Accept-Language",
            "value": "nl-NL"
          }
        ]
      }
    }
  ]
}

Réécrire les demandes vers une URL à partir d’une variable d’environnement

Réécrire les demandes vers https://api.contoso.com l’URL de base stockée dans la API_BASE_URL variable d’environnement, en conservant le reste du chemin d’accès.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/(.*)"
      },
      "out": {
        "url": "${env:API_BASE_URL}/$1"
      }
    }
  ]
}

Propriétés de fichier fictifs

Propriété Descriptif Obligatoire
rewrites Tableau d’objets de réécriture qui définit la liste des règles de réécriture que le RewritePlugin applique aux requêtes qu’il intercepte Oui

Réécrire l’objet

Chaque règle de réécriture a les propriétés suivantes :

Propriété Descriptif Obligatoire
in Réécrire le modèle pour correspondre à la requête entrante. Oui
out Réécrire le modèle pour réécrire la requête Oui

Notes

Si la requête intercepte RewritePlugin, ne correspond pas à toutes les propriétés définies dans le modèle, le plug-in n’applique pas la règle de réécriture à la requête.

Réécrire le modèle

Chaque modèle de réécriture a les propriétés suivantes :

Propriété Descriptif Obligatoire Valeur par défaut Exemple de valeur
url Dans le modèle , expression régulière que le plug-in s’applique à l’URL. Dans le modèle out , URL pour réécrire la requête. Si vous l’omettez dans le modèle out , le plug-in ne modifie pas l’URL de la requête. Oui dans, non en dehors ^http://(.*)
headers Tableau d’en-têtes de requête à définir sur la demande. Pris en charge uniquement dans le modèle out . Non

Notes

Le modèle out doit spécifier url, headersou les deux.

Si vous utilisez des groupes de capture dans l’expression régulière dans les modèles, vous pouvez les référencer dans le modèle out. Par exemple, si vous souhaitez réécrire http://example.com/foohttps://example.com/foo, vous pouvez utiliser la règle de réécriture suivante :

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

Dans l’URL de sortie , vous pouvez référencer des variables d’environnement à l’aide de la ${env:VAR_NAME} syntaxe. Le proxy de développement insère la valeur de la variable d’environnement as-is, de sorte que la valeur peut également faire référence aux groupes de capture à partir du modèle. Le proxy de développement résout uniquement les variables d’environnement pour les requêtes qui correspondent au modèle et ne développe pas les variables d’environnement dans le modèle . Si aucune variable d’environnement référencée n’est définie, le proxy de développement enregistre une erreur et ignore la règle de réécriture.

En-tête de requête

Chaque en-tête de requête a les propriétés suivantes :

Propriété Descriptif Obligatoire
name Nom de l’en-tête de requête Oui
value Valeur à définir pour l’en-tête de requête Oui

Notes

Le plug-in correspond aux noms d’en-têtes sans respect de la casse. Si la demande a déjà l’en-tête, le plug-in remplace sa valeur. Si l’en-tête est manquant, le plug-in l’ajoute.

Le plug-in définit des en-têtes uniquement sur les demandes dont l’URL correspond au modèle d’URL. Le plug-in évalue la correspondance avant d’appliquer la réécriture d’URL de la même règle. Par conséquent, lorsqu’une règle réécrit à la fois l’URL et les en-têtes, les en-têtes s’appliquent aux mêmes requêtes que la réécriture d’URL.

Vous pouvez référencer des variables d’environnement dans les valeurs d’en-tête à l’aide de la ${env:VAR_NAME} syntaxe. Le proxy de développement les résout de la même façon que dans l’URL sortante et ignore la règle de réécriture si aucune variable d’environnement référencée n’est définie. Les valeurs d’en-tête ne prennent pas en charge les groupes de capture à partir du modèle.