RewritePlugin

Reescritura las solicitudes.

Captura de pantalla de un símbolo del sistema con el proxy de desarrollo reescribir una solicitud de API entrante.

Ejemplo de configuración

{
  "$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"
  }
}

Propiedades de configuración

Propiedad Descripción Valor predeterminado
rewritesFile Ruta de acceso al archivo que contiene definiciones de reescritura rewrites.json

Opciones de línea de comandos

Ninguno

Ejemplos de archivos de reescritura

A continuación se muestran ejemplos de reglas de reescritura.

Reescritura de todas las solicitudes de HTTP a HTTPS

Vuelva a escribir todas las solicitudes de HTTP a HTTPS. En este contexto, todo significa todas las solicitudes configuradas con proxy de desarrollo o 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"
      }
    }
  ]
}

Establecimiento de un encabezado de solicitud

Establezca el Accept-Language encabezado en todas las solicitudes en https://api.contoso.com. Si la solicitud ya tiene el encabezado , el complemento reemplaza su valor. Si falta el encabezado, el complemento lo agrega. Dado que la regla no especifica una dirección URL de salida , el complemento no cambia la dirección URL de la solicitud.

{
  "$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"
          }
        ]
      }
    }
  ]
}

Reescritura de solicitudes a una dirección URL desde una variable de entorno

Vuelva a escribir las solicitudes a https://api.contoso.com la dirección URL base almacenada en la API_BASE_URL variable de entorno, conservando el resto de la ruta de acceso.

{
  "$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"
      }
    }
  ]
}

Propiedades de archivo simuladas

Propiedad Descripción Obligatorio
rewrites Matriz de objetos de reescritura que define la lista de reglas de reescritura que el RewritePlugin aplica a las solicitudes que intercepta sí

Reescritura del objeto

Cada regla de reescritura tiene las siguientes propiedades:

Propiedad Descripción Obligatorio
in Vuelva a escribir el patrón para que coincida con la solicitud entrante. sí
out Patrón de reescritura para volver a escribir la solicitud sí

Comentarios

Si la solicitud que intercepta RewritePlugin, no coincide con todas las propiedades definidas en el patrón in , el complemento no aplica la regla de reescritura a la solicitud.

Patrón de reescritura

Cada patrón de reescritura tiene las siguientes propiedades:

Propiedad Descripción Obligatorio Valor predeterminado Valor de ejemplo
url En el patrón in , expresión regular que el complemento aplica a la dirección URL. En el patrón de salida , dirección URL a la que volver a escribir la solicitud. Si lo omite en el patrón de salida , el complemento no cambia la dirección URL de la solicitud. Sí , no dentro, no dentro ^http://(.*)
headers Matriz de encabezados de solicitud que se van a establecer en la solicitud. Solo se admite en el patrón de salida . no

Comentarios

El patrón out debe especificar url, headerso ambos.

Si usa grupos de captura en la expresión regular en los patrones , puede hacer referencia a ellos en el patrón out. Por ejemplo, si desea volver a escribir http://example.com/foo en https://example.com/foo, puede usar la siguiente regla de reescritura:

{
  "$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"
      }
    }
  ]
}

En la dirección URL de salida , puede hacer referencia a variables de entorno mediante la ${env:VAR_NAME} sintaxis . Dev Proxy inserta el valor de la variable de entorno as-is, por lo que el valor también puede hacer referencia a los grupos de captura del patrón in . Dev Proxy resuelve las variables de entorno solo para las solicitudes que coinciden con el patrón in y no expande variables de entorno en el patrón in . Si no se establece una variable de entorno a la que se hace referencia, Dev Proxy registra un error y omite la regla de reescritura.

Cabecera de solicitud

Cada encabezado de solicitud tiene las siguientes propiedades:

Propiedad Descripción Obligatorio
name Nombre del encabezado de solicitud sí
value Valor que se va a establecer para el encabezado de solicitud sí

Comentarios

El complemento coincide con los nombres de encabezado sin distinción entre mayúsculas y minúsculas. Si la solicitud ya tiene el encabezado , el complemento reemplaza su valor. Si falta el encabezado, el complemento lo agrega.

El complemento solo establece encabezados en solicitudes cuya dirección URL coincide con el patrón de dirección URL. El complemento evalúa la coincidencia antes de aplicar la reescritura de dirección URL de la misma regla, por lo que cuando una regla vuelve a escribir la dirección URL y los encabezados, los encabezados se aplican a las mismas solicitudes que la reescritura de la dirección URL.

Puede hacer referencia a variables de entorno en valores de encabezado mediante la ${env:VAR_NAME} sintaxis . El proxy de desarrollo los resuelve de la misma manera que en la dirección URL de salida y omite la regla de reescritura si no se establece una variable de entorno a la que se hace referencia. Los valores de encabezado no admiten grupos de captura del patrón in .