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
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/v1trifft/api/v1/usersund/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 („
priceauf9.9, plusdiscount_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.logim Skript, Ausgabe auf der Logs-Seite. - Remote Script: öffentliche
http://- oderhttps://-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.