Rewrite und Skripte

Mit Rewrite-Regeln mocken, leiten, verzögern oder ändern Sie APIs auf dem Gerät. Reicht eine Regel für dynamische Fälle nicht, fangen Sie die Anfrage mit einem JavaScript-Skript ab.

Skripte schreiben: Skript-Leitfaden.


Inhalt

  1. Scope
  2. Rewrite-Regeln
  3. JavaScript-Skripte

1. Scope

Der Scope legt fest, wo Regel oder Skript greifen: Host + Path. Host ist Pflicht, Path optional.

  • Host: gilt für alle Requests an diesen Host. Fuzzy-Match: nur die Hauptdomain (example.com) reicht, Subdomains treffen mit. Captured Host aus der Liste wählen oder selbst eintippen.
  • Path (optional): gesetzt, gilt nur diese API. Path ist nur Präfix — keine *-Wildcards. /api/v1 trifft /api/v1/users und /api/v1/orders. Nach dem Host eine API aus der Liste wählen (Method und Path werden übernommen) oder den Pfad eintippen.

Tipp: Eine vorhandene API füllt Method und Path. Bei einer Rewrite-Regel kommen Mock-Vorlagen oder Headers dazu.


2. Rewrite-Regeln

Laufen Frontend und Backend parallel, fehlt die API oft noch, oder Sie brauchen Fehlercodes. Rewrite deckt Mock und Randfälle ab. Wirkungsbereich: 1. Scope.

2.1 Rewrite Action

  • Redirect: Request woandershin (Produktion → Localhost oder Staging).
  • Mock: kein Netz; Ihr JSON/XML, Status (404, 500, …), Header und Body.
  • Drop:
    • Request droppen: als ginge nichts raus (offline).
    • Response droppen: Request geht raus, es kommt nichts zurück (Timeout).
  • Delay: Latenz, um Loading im schwachen Netz zu prüfen.
  • Modify:
    • Header: Test-Token setzen, User-Agent ändern.
    • Body ersetzen: Request- oder Response-Body komplett.
    • Regex im Body: JSON-Felder patchen. z. B. "status": "pending""status": "success".

Wenn etwas hakt

  • Regel greift nicht: eine neuere Regel mit höherer Priorität gewinnt.
  • Regex trifft nicht: JSON hat oft Leerzeichen und Einrückung. Fehlt Whitespace im Muster (\s*), schlägt es fehl. Eingebautes Test-Panel nutzen.

3. JavaScript-Skripte

Mock mit Rechnung (Zeitstempel-Signatur, zusammengesetzte Daten) gehört ins Skript. Derselbe Scope: 1. Scope.

3.1 Werkzeuge

Neben Handarbeit:

  • KI erzeugen: in Alltagssprache beschreiben („price auf 9.9, plus discount_tag: true“) — Standard-JS wird eingefügt.
  • Test Script: vor dem Speichern an einem echten Capture testen. Diff vorher/nachher und Fehler. Zusätzlich console.log im Skript, Ausgabe auf der Logs-Seite.
  • Remote Script: öffentliche http://- oder https://-URL. ApiCatcher lädt lokal — sinnvoll, wenn ein Team denselben Mock teilt.

3.2 Lifecycle-Funktionen

Details: Skript-Leitfaden

Die Hooks implementieren:

// Ausgehende Anfrage
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';
    }
    // Aktionen: passthrough, modify, mock, drop
    return { action: 'modify', request: request };
}

// Eingehende Antwort
function interceptResponse(request, response) {
    // response.statusCode, response.headers, response.body
    if (response.body) {
        var data = safeJsonParse(response.body); // sicheres JSON-Parse
        if (data) {
            data.mock_field = true;
            response.body = JSON.stringify(data);
            return { action: 'modify', response: response };
        }
    }
    return { action: 'passthrough' };
}

3.3 Eingebaute APIs

  • localStore: Zustand über Requests halten. Auth beim Login merken, später injizieren.
    • localStore.write('session_id', 'abc')
    • var t = localStore.read('session_id')
  • httpClient: zusätzliche HTTP-Calls während das Skript läuft (externen Stand holen, Config laden).
    • var res = httpClient.get('https://api.ipify.org')

Wenn etwas hakt

  • Syntax / Laufzeit: Test Script. console.log("...") erscheint auf Logs.
  • Lifecycle: hat ein Rewrite mit höherer Priorität schon Mock oder Drop gemacht, läuft das Skript für diesen Request nicht.