# Map Remote

> Usa Proxyman Map Remote para redirigir las solicitudes HTTP, HTTPS y WebSocket que coincidan a otro host, puerto o ruta, como localhost o un entorno de staging.

## 1. ¿Qué es? {#1-whats-it}

Map Remote (**⌥⌘R**) cambia el destino de una solicitud HTTP a un nuevo servidor, según tus reglas. Tu cliente recibe la respuesta del nuevo servidor como si nada hubiera cambiado.

Map Remote también admite mapear de HTTP a HTTPS y viceversa.

![Ventana de Map Remote de Proxyman con las reglas Localhost to Production, Staging to Production y una regla Regex](https://proxyman.com/docs/assets/proxyman-map-remote-rules.jpg)

_Reglas de Map Remote_

> **Nota:** Consulta las [configuraciones habituales de Map Remote](https://proxyman.com/docs/es/advanced-features/map-remote#7-common-usages) al mapear de HTTP <-> HTTPS.

> **Nota:** Desde Proxyman 4.3.0: Map Remote admite WebSocket y WebSocket seguro.

## 2. Beneficios {#2-benefits}

* Usa endpoints de producción en tu sitio de desarrollo para determinados endpoints, sin cambiar el código fuente
* Usa endpoints de desarrollo en tu sitio de producción
* Envía determinadas URLs de solicitud a distintos destinos
* Reemplaza componentes de la solicitud, como Protocol, Host, Port, Path o Query, sobre la marcha

> **Nota:** Para aumentar tu productividad, puedes usar la [función Scripting](https://proxyman.com/docs/es/scripting/script#1-whats-it) para obtener el mismo resultado que con Map Remote escribiendo código JavaScript sencillo.
>
> Por ejemplo, [Snippet code para cambiar de un servidor de producción a uno localhost](https://proxyman.com/docs/es/scripting/snippet-code#change-request-destination-scheme-host-port-path)

## 3. Map Remote con solicitudes GraphQL {#3-map-remote-with-graphql-requests}

Desde Proxyman 2.27.0+, Map Remote puede trabajar con solicitudes GraphQL mediante un QueryName concreto. Consulta el siguiente documento sobre GraphQL.

- [GraphQL](https://proxyman.com/docs/es/advanced-features/graphql)

## 4. Usar Scripting como Map Remote ✅ {#4-using-scripting-as-map-remote-}

Si una regla de Map Remote es difícil de configurar, puedes hacerlo más fácilmente con la [herramienta Scripting](https://proxyman.com/docs/es/scripting/script#1-whats-it).

Consulta [Map Remote Snippet Code](https://proxyman.com/docs/es/scripting/snippet-code#8-map-remote-with-scripting) para aprender a usar Scripting y lograr el mismo resultado que con Map Remote.

Por ejemplo, con Scripting es fácil hacer lo siguiente:

* Mapear endpoints de v1 a v2
* Mapear Production a Localhost
* Mapear Localhost a Production
* ...

## 5. Regla de coincidencia {#5-matching-rule}

> **Nota:** Proxyman admite [expresiones regulares](https://developer.apple.com/documentation/foundation/nsregularexpression#1965590) y comodines desde la versión 2.3.0. Consulta [cómo usar comodines y Regex](https://proxyman.com/docs/es/basic-features/regex).

Podemos definir reglas de coincidencia con [comodines o expresiones regulares](https://proxyman.com/docs/es/basic-features/regex).

En las solicitudes coincidentes, Proxyman intenta:

* Reemplazar Protocol, Host, Port, Path y Query, si están definidos
* Si un componente está vacío, no modifica ese componente de la solicitud coincidente

![Editor de reglas de Map Remote de Proxyman que mapea http://localhost:3000/* a https://httpbin.proxyman.app](https://proxyman.com/docs/assets/proxyman-map-remote-rule-editor.jpg)

_Editor de reglas de Map Remote_

> **Nota:**
>
> * Deja un campo de texto en blanco para mantener sin cambios esa parte de la solicitud coincidente
> * No se permiten comodines en los campos Map To

### Depuración {#debugging}

Para saber qué regla de Map Remote coincide con tu URL, abre la pestaña Summary de la solicitud:

1. Selecciona tu solicitud
2. Pestaña **Summary** -> **Debugging Tools**
3. Comprueba la URL mapeada

### Conservar el encabezado Host {#preserve-host-header}

De forma predeterminada, Proxyman sobrescribe el encabezado Host para que coincida con el nuevo host de Map Remote. Esto es necesario para que la mayoría de las solicitudes se completen correctamente.

Si quieres mantener el encabezado Host original, marca la casilla "Preserve Host Header" al crear una nueva entrada. Proxyman conservará el valor de Host.

## 6. Cómo usarlo {#6-how-to-use}

* Haz clic con el botón derecho en la solicitud seleccionada -> **Tools** -> **Map Remote…**. Proxyman rellena los datos necesarios a partir de la solicitud seleccionada.

![Crear una regla de Map Remote a partir de una solicitud](https://proxyman.com/docs/assets/proxyman-map-remote-context-menu.jpg)

_Crear una regla de Map Remote a partir de una solicitud_

## 7. Usos habituales {#7-common-usages}

### 7.1 Mapear Localhost (HTTP) a Production (HTTPS) {#71-map-localhost-http-to-production-https}

**Resultado:**

| URL original                                        | URL de destino                                    |
| --------------------------------------------------- | ------------------------------------------------- |
| http://localhost:3000                               | https://proxyman.io                               |
| http://localhost:3000/pricing                       | https://proxyman.io/pricing                       |
| http://localhost:3000/v1/user?id=123\&name=proxyman | https://proxyman.io/v1/user?id=123\&name=proxyman |
| **POST** http://localhost:3000/login                | **POST** https://proxyman.io/login                |

### 7.2 Mapear Production (HTTPS) a localhost (HTTP) {#72-map-production-https-to-localhost-http}

| URL original                                      | URL de destino                                      |
| ------------------------------------------------- | --------------------------------------------------- |
| https://proxyman.io                               | http://localhost:3000                               |
| https://proxyman.io/v1/user?id=123\&name=proxyman | http://localhost:3000/v1/user?id=123\&name=proxyman |
| **POST** https://proxyman.io/login                | **POST** http://localhost:3000/login                |

### 7.3 Mapear una URL concreta a otro host {#73-map-certain-url-to-another-host}

* Regla: **https://proxyman.io/v1/user** (por ejemplo)
* Selecciona **Any** y **Wildcard**
* **Desmarca Include all subpaths of this URL:** al desmarcarla, no se mapean las demás subrutas

**Map To:**

* Protocol: **https**
* Host: nuevo host (p. ej., staging.proxyman.io)
* Port: **443** (tu puerto local)
* Deja Path y Query vacíos

**Resultado:**

| URL original                                      | URL de destino                                            |
| ------------------------------------------------- | --------------------------------------------------------- |
| https://proxyman.io                               | https://proxyman.io (no aplica la regla)                  |
| https://proxyman.io/v2/setting                    | https://proxyman.io/v2/setting (no aplica la regla)       |
| https://proxyman.io/v1/user?id=123\&name=proxyman | https://staging.proxyman.io/v1/user?id=123\&name=proxyman |

### 7.4 Mapear WebSocket de localhost a Production {#74-map-websocket-from-localhost-to-production}

| URL original                  | URL de destino                      |
| ----------------------------- | ----------------------------------- |
| ws://localhost:4000           | wss://ws.postman-echo.com           |
| ws://localhost:4000/websocket | wss://ws.postman-echo.com/websocket |

### 7.5 Mapear WebSocket de Production a localhost {#75-map-websocket-from-production-to-localhost}

| URL original                        | URL de destino                |
| ----------------------------------- | ----------------------------- |
| wss://ws.postman-echo.com           | ws://localhost:3000           |
| wss://ws.postman-echo.com/websocket | ws://localhost:3000/websocket |

## Más información {#learn-more}

* [Cambiar el endpoint de la API de producción al entorno localhost para hacer pruebas](https://proxyman.com/posts/2025-01-10-switch-api-endpoint-from-localhost-to-production-environment)
