Reescritura y scripts

Con reglas de reescritura puede simular, redirigir, retrasar o modificar APIs en el dispositivo. Si la regla no cubre un cálculo dinámico, intercepte con un script JavaScript.

Cómo escribir scripts: Guía de scripts.


Índice

  1. Alcance (Scope)
  2. Reglas de reescritura
  3. Scripts JavaScript

1. Alcance (Scope)

El alcance indica dónde aplica una regla o un script: Host + Path. Host es obligatorio; Path es opcional.

  • Host: aplica a todas las peticiones de ese host. La coincidencia es difusa: con el dominio principal (example.com) también entran los subdominios. Elija un host ya capturado en la lista o escríbalo.
  • Path (opcional): si lo pone, solo esa API. Path es solo prefijo (no use comodines *). /api/v1 coincide con /api/v1/users y /api/v1/orders. Tras elegir el Host, elija una API de la lista (Method y Path se rellenan) o escriba la ruta.

Consejo: Elegir una API existente rellena Method y Path. En una regla de reescritura también rellena plantillas Mock o Headers.


2. Reglas de reescritura

Si frontend y backend van en paralelo, la API a menudo aún no existe, o necesita códigos de error. La reescritura cubre Mock y casos límite. Dónde aplica: 1. Alcance.

2.1 Rewrite Action

  • Redirect: enviar la petición a otra dirección (producción → localhost o staging).
  • Mock: no sale a red; devuelve su JSON/XML, estado (404, 500, …), cabeceras y cuerpo.
  • Drop:
    • Drop Request: como si no saliera (sin red).
    • Drop Response: la petición sale, no vuelve respuesta (timeout).
  • Delay: latencia para probar el Loading en red lenta.
  • Modify:
    • Header: inyectar un token de prueba o cambiar User-Agent.
    • Reemplazar Body: el cuerpo entero de petición o respuesta.
    • Regex en Body: parchear campos JSON. Por ejemplo "status": "pending""status": "success".

Si no funciona

  • La regla no aplica: otra más nueva y con más prioridad gana.
  • El regex no pega: el JSON suele traer espacios e indentación. Si el patrón no contempla espacios (\s*), falla. Use el panel Test.

3. Scripts JavaScript

Para Mock que necesita cálculo (firmas con timestamp, datos ensamblados), el script es el camino. Mismo alcance: 1. Alcance.

3.1 Herramientas

Además de escribir a mano:

  • Generar con IA: descríbalo en lenguaje natural («pon price a 9.9 y añade discount_tag: true») y rellena JS estándar.
  • Test Script: pruebe con una petición capturada antes de guardar. Verá el diff y los errores. También puede usar console.log y leer la salida en Logs.
  • Remote Script: pegue una URL pública http:// o https://. ApiCatcher la carga en local; sirve para compartir un Mock en el equipo.

3.2 Funciones de ciclo de vida

Detalle: Guía de scripts

Implemente los hooks:

// Petición saliente
function interceptRequest(request) {
    // request.method, request.url, request.headers, request.body, request.queryParams
    if (request.path === '/api/v1/test') {
        request.headers['X-Debug-Token'] = 'test_token';
    }
    // Acciones: passthrough, modify, mock, drop
    return { action: 'modify', request: request };
}

// Respuesta entrante
function interceptResponse(request, response) {
    // response.statusCode, response.headers, response.body
    if (response.body) {
        var data = safeJsonParse(response.body); // parseo JSON seguro
        if (data) {
            data.mock_field = true;
            response.body = JSON.stringify(data);
            return { action: 'modify', response: response };
        }
    }
    return { action: 'passthrough' };
}

3.3 APIs integradas

  • localStore: estado entre peticiones. Guardar auth en el login e inyectarla después.
    • localStore.write('session_id', 'abc')
    • var t = localStore.read('session_id')
  • httpClient: HTTP extra mientras corre el script (sincronizar estado externo, traer config).
    • var res = httpClient.get('https://api.ipify.org')

Si no funciona

  • Sintaxis / runtime: Test Script. console.log("...") sale en Logs.
  • Ciclo de vida: si una reescritura con más prioridad ya hizo Mock o Drop, el script no corre para esa petición.