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)
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/v1coincide con/api/v1/usersy/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
pricea9.9y añadediscount_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.logy leer la salida en Logs. - Remote Script: pegue una URL pública
http://ohttps://. 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.