```html
Bei der Verwendung von Apidog für API-Tests kann es vorkommen, dass Sie die Request-Parameter der aktuellen Test-API für andere Zwecke extrahieren müssen. Betrachten Sie beispielsweise eine API zur Auftragserstellung für eine E-Commerce-Plattform mit dem folgenden Request-Body:
{"id": 12345,"products": [
{"id": 1, "quantity": 2},
{"id": 3, "quantity": 1}
],"shippingAddress": "xx Province xx City xx District","paymentMethod": "credit_card"
}
In diesem Szenario möchten Sie möglicherweise:
- Request-Parameter extrahieren und verschlüsseln: Um die Privatsphäre zu schützen, müssen Sie möglicherweise den Wert des Parameters
shippingAddress
verschlüsseln, bevor Sie ihn senden. - Request-Parameter als Variablen speichern: Möglicherweise möchten Sie den Parameter
id
als "temporäre Variable" für die Verwendung in nachfolgenden API-Tests (z. B. zum Überprüfen des Bestellstatus) festlegen. - Request-Parameter validieren: Bevor Sie die Anfrage senden, müssen Sie möglicherweise überprüfen, ob der Parameter
paymentMethod
einen gültigen Wert hat.
Um dies zu handhaben, können Sie die Request-Parameter von der API mithilfe der Methode pm.request
extrahieren. Sie können ein benutzerdefiniertes Skript erstellen, das pm.request
in der Konsole ausgibt, sodass Sie verschiedene Parameterinformationen anzeigen können. Zum Beispiel:
// Current api's request parameters informationconsole.log(pm.request);
Das request
in dieser Methode bezieht sich auf das Request-Objekt der API. In "Pre-request"-Skripten stellt es den "ausstehenden Request" dar, während es sich in "Post-request"-Skripten auf den "gesendeten Request" bezieht.
Sie können entscheiden, ob Sie die aktuellen Request-Parameter im Pre-Request- oder Post-Request-Skript abrufen möchten, basierend auf Ihren Anforderungen:
- Für Parameter vor dem Senden des Requests: Verwenden Sie Pre-Request-Skripte.
- Für Parameter nach dem Senden des Requests: Verwenden Sie Post-Request-Skripte.
Beachten Sie, dass nur Änderungen, die in den "Pre-request"-Skripten vorgenommen wurden, wirksam sind; Änderungen, die in den "Post-request"-Skripten vorgenommen wurden, haben keine Auswirkungen.
Dieser Artikel stellt hauptsächlich vor, wie Sie Request-Parameter der aktuellen API über Skripte in den "Pre-request Script"- und "Post-request Script"-Funktionen von Apidog abrufen können.
Um Request-Parameter von anderen APIs abzurufen, können Sie die Parameter in Umgebungsvariablen speichern und diese dann lesen oder die Funktion "Tests" verwenden. Mit "Dynamic Values" können Sie die Request-Parameter oder Antwortdaten direkt aus vorherigen Schritten (d. h. anderen APIs) lesen.

Schritt-für-Schritt-Anleitung zum Extrahieren von Request-Parametern?
Abrufen der Pre-Request-URL
Die Pre-Request-URL ist die im "Environment Management" konfigurierte Serviceadresse.

Um die Pre-Request-URL der aktuellen API abzurufen, können Sie die Methoden pm.request.getBaseUrl()
oder pm.request.baseUrl
verwenden. Zum Beispiel:
// Get the pre-request URL
let preUrl = pm.request.getBaseUrl();
console.log(preUrl);
// Or
let baseUrl = pm.request.baseUrl;
console.log(baseUrl);

Wenn mehrere Pre-Request-URLs konfiguriert sind, ruft das Skript die URL ab, die dem angegebenen Dienst entspricht. Sie können diese Konfigurationen über "Edit-> Service (Pre-request URL)" überprüfen und verwalten.

Pfadparameter abrufen
Pfadparameter sind Teil der URL, die verwendet wird, um den Ressourcenpfad anzugeben, und identifizieren häufig bestimmte Ressourcen oder Sammlungen. In Apidog werden Pfadparameter mithilfe von geschweiften Klammern {}
dargestellt, die direkt im URL-Pfad enthalten sind. Zum Beispiel:
https://Apidogmock.com/xxx/xxx/store/products/{id}
In diesem Beispiel ist {id}
ein Pfadparameter, der dynamisch ersetzt werden kann. Sie können Pfadparameter mithilfe von pm.request.url.path
extrahieren, das ein Array mit allen Pfadnamen zurückgibt, wodurch ein präziser Zugriff über die Array-Indizierung ermöglicht wird:
// Get path parameters from pm.request.url.path
let getPathUrl = pm.request.url.path;
// Print data to consoleconsole.log(getPathUrl);
console.log(getPathUrl[4]);

Query-Parameter abrufen
Query-Parameter sind zusätzliche Informationen, die an die URL angehängt werden, typischerweise nach dem Fragezeichen ?
und als Schlüssel-Wert-Paare formatiert sind, die durch &
getrennt sind. Zum Beispiel:
https://Apidogmock.com/xxx/xxx/store/products/{id}?cart_id=42®ion_id=43
Um Query-Parameter zu extrahieren, verwenden Sie pm.request.url.query
, das alle Schlüssel-Wert-Paare abruft. Sie können dann die Methode get()
verwenden, um einen Parameter spezifisch abzurufen. So extrahieren Sie den Parameter cart_id
:
// Get query parameters from pm.request.url.query
let getQueryUrl = pm.request.url.query;
// Print data to consoleconsole.log(getQueryUrl);
console.log(getQueryUrl.get("cart_id"));

Die vollständige URL abrufen
Um die vollständige URL der API-Anfrage abzurufen, einschließlich der Pre-Request-URL, der Pfadparameter und der Query-Parameter, verwenden Sie die Methode pm.request.url.toString()
:
// Print complete URL to consoleconsole.log(pm.request.url.toString());
Diese Methode gibt eine Zeichenfolge zurück, die alle URL-Informationen enthält, mit dynamischen Ersetzungen für Pfadparameter und alle Query-Parameter.

Body-Parameter abrufen
- Für das Form-Data-Format: Form-Data organisiert Daten in Schlüssel-Wert-Paaren, die häufig für Datei-Uploads und komplexe Formularübermittlungen verwendet werden. Um Form-Data-Body-Parameter abzurufen, verwenden Sie
pm.request.body.formdata
, das ein Array-Objekt zurückgibt:
// When body type is form-data
let formData = pm.request.body.formdata;
// Print data to consoleconsole.log(formData);
console.log(formData.get("email"));
console.log(formData.get("password"));

- Für das x-www-form-urlencoded-Format: Ähnlich wie Form-Data verwendet x-www-form-urlencoded ebenfalls Schlüssel-Wert-Paare. Um diese Parameter abzurufen, verwenden Sie
pm.request.body.urlencoded
:
// When body type is x-www-form-urlencoded
let urlencoded = pm.request.body.urlencoded;
// Print data to consoleconsole.log(urlencoded);
console.log(urlencoded.get("email"));
console.log(urlencoded.get("password"));

- Für das Raw-, JSON- oder XML-Format: Verwenden Sie
pm.request.body.raw
, um den Raw-Body-Inhalt abzurufen, der eine Zeichenfolge zurückgibt. Sie müssen ihn normalerweise parsen, um auf bestimmte Parameter zuzugreifen:
// For raw, JSON, or XML format
let formData = pm.request.body.raw;
// Parse to JSON object
let jsonData = JSON.parse(formData);
// Print data to console
console.log(jsonData);
console.log(jsonData.email);
console.log(jsonData.password);

Header-Parameter abrufen
Um die Header-Parameter des Requests abzurufen, verwenden Sie pm.request.headers
, das ein Array-Objekt zurückgibt, das alle Request-Header-Informationen enthält. Sie können bestimmte Parameterwerte mithilfe der Funktion get()
präzise lokalisieren und extrahieren:
// Get request header parameters
let headers = pm.request.headers;
// Print data to consoleconsole.log(headers);
console.log(headers.get("Accept"));
FAQs zum Abrufen von Request-Parametern
Warum werden referenzierte Variablen nicht ersetzt?
Wenn Ihre API-Request-Parameter auf Umgebungsvariablenwerte verweisen, aber in der Konsole nicht durch bestimmte Werte ersetzt werden, stellen Sie sicher, dass Sie die "Variable Replacement & Inherit Parent" ganz am Anfang Ihres Skripts im Abschnitt "Pre-request" oder "Post-request" verschieben. Dadurch wird sichergestellt, dass alle referenzierten Variablen (einschließlich dynamischer Werte) durch den tatsächlichen Inhalt ersetzt werden.
Anhang
Methoden und Beschreibungen
Methode | Beschreibung | Zweck |
---|---|---|
pm.request | Informationen zu den Request-Parametern der aktuellen Schnittstelle abrufen | Auf Request-Objekt zugreifen |
pm.request.getBaseUrl() | Pre-Request-URL abrufen | Serviceadresse abrufen |
pm.request.baseUrl | Pre-Request-URL abrufen (alternative Methode) | Serviceadresse abrufen |
pm.request.url.path | Pfadparameter abrufen | URL-Pfadparameter extrahieren |
pm.request.url.query | Query-Parameter abrufen | URL-Query-Parameter extrahieren |
pm.request.url.toString() | Vollständige URL abrufen | Alle Parameter in der vollständigen URL abrufen |
pm.request.body.formdata | Form-Data-Body-Parameter abrufen | Form-Data extrahieren |
pm.request.body.urlencoded | x-www-form-urlencoded-Body-Parameter abrufen | URL-codierte Form-Data extrahieren |
pm.request.body.raw | Raw-, JSON- oder XML-Body-Parameter abrufen | Raw-Request-Body-Inhalt extrahieren |
pm.request.headers | Header-Parameter abrufen | Request-Header-Informationen extrahieren |
JSON.parse() | JSON-Zeichenfolge parsen | JSON-Zeichenfolge in ein JavaScript-Objekt konvertieren |
Fazit
Dieser Artikel hat beschrieben, wie Sie Request-Parameter in Apidog extrahieren können, einschließlich Pre-Request-URLs, Pfadparametern, Query-Parametern, Body-Parametern und Header-Parametern. Durch die Verwendung des pm.request
-Objekts und seiner zugehörigen Methoden können Sie verschiedene Request-Daten einfach abrufen und manipulieren.
```