Wenn Sie die HTTP(S)-Überwachung oder einen Auslastungstest konfigurieren, um die Leistung Ihrer Website oder API zu überprüfen, müssen Sie manchmal HTTP-Anforderungen mit einer sich dynamisch ändernden Nutzlast senden. Beispielsweise müssen Sie möglicherweise eine JSON mit einer eindeutigen Produkt-ID senden, um ein neues Produkt zur Datenbank der E-Commerce-Anwendung hinzuzufügen, oder ein aktuelles Datum und eine aktuelle Uhrzeit an einen Webserver usw. Oder nehmen wir an, Sie müssen eine Nutzlast parametrisieren, um Ihre API zu laden.

Dotcom-Monitor unterstützt die Razor-Syntax und Datenmasken, damit Benutzer dynamisch ändernde und parametrisierte HTTP-Anforderungen für Webüberwachungs- und Auslastungstests konfigurieren können.

Im Allgemeinen umfasst die dynamische Nutzlastkonfiguration zwei grundlegende Schritte:

  • Angeben von Textkörperdaten mit dynamischen Parametern (JSON, XML, Text, JavaScript, HTML) im Feld Daten posten (Patch, Put).
  • Deklarieren einer Analysemethode im Feld Skript vorbereiten. Wenn die Analysemethode nicht angegeben ist, verarbeitet das System Textkörperdaten als Text.

Wenn es notwendig ist, die Textdaten einer HTTP-Anforderung zu parametrisieren, können die entsprechenden Kontextparameter im Feld Skript vorbereiten oder mit der Option
Kontextparameter verwalten
deklariert werden.

Verwenden von Razor Engine

JSON-Daten oder Skriptinhalte, die im Text der HTTP-Anforderung übergeben werden, können mithilfe der Syntax des Razor-Moduls dynamisch geändert werden. Wenn Sie mit der Razor-Syntax im Feld Daten bereitstellen arbeiten, verwenden Sie das Präfix @ , um den folgenden Text als C#-Codeelement zu markieren (Inlineausdrücke, einzelne Anweisungsblöcke oder Blöcke mit mehreren Anweisungen). Weitere Informationen zur Razor-Syntax finden Sie unter https://www.w3schools.com/asp/razor_syntax.asp.

Im Falle von Fehlern, die in der Razor-Syntax beim Analysieren des Anforderungstexts erkannt werden, wird ein Fehler generiert und dem Testausführungsbericht hinzugefügt.

Dotcom-Monitor unterstützt das Razor-Modell (definiert die Struktur einer Razor-Eingabemeldung) mit den folgenden Eigenschaften:

  • @Model.DeviceID – eine Variable, die einen eindeutigen Bezeichner des aktuellen Überwachungsgeräts zurückgibt.
  • @Model.TaskID – eine Variable, die einen eindeutigen Bezeichner der aktuellen Überwachungsaufgabe zurückgibt.
  • @Model.SessionID – eine Variable, die einen eindeutigen Bezeichner der aktuellen Überwachungssitzung zurückgibt.

Sie können Kontextparameter in Razor-Ausdrücken verwenden. Um auf einen Kontextparameter in einem Razor-Ausdruck zu verweisen, umschließen Sie den Verweis auf den Kontextparameter in den eckigen Klammern [ ] und schließen Sie seinen Namen in doppelte Anführungszeichen ein ” :

@Model["ContextParameterName"]

Um das System darüber zu informieren, dass Daten in einem Anforderungstext vom Razor-Modul analysiert werden müssen, fügen Sie im Feld Skript vorbereiten die ProcessPostDataByRazor(currentTask)-Methode hinzu. Andernfalls werden die Codeelemente aus Post Data als Text analysiert.

Beispiel

Angenommen, wir möchten eine Geräte-ID und einen Testmarker in einem HTTP-Anforderungstext senden, dann müssen wir das Feld “Daten posten ” wie folgt konfigurieren:

{ "Device": "@Model.DeviceID", "ContextTest": "@Model["Test"]" }

Anschließend müssen wir den Kontextparameterwert und die Analysemethode im Feld Skript vorbereiten festlegen:

context.Test = "Website Availability Monitoring";
ProcessPostDataByRazor(currentTask);

Dabei hängt der currentTask-Parameter nicht von einem Aufgabennamen ab und weist den Typ der Aufgabe auf, die derzeit verarbeitet wird.

Verwenden von Datenmasken in HTTP-Anforderungen

Sie können auf Kontextparameter in einem POST-Körper verweisen, indem Sie den Parameternamensverweis in Markerzeichen auf beiden Seiten umschließen. So wird ein Verweis auf den Kontextparameter “GUID” wie folgt eingegeben:

{"ContextGuid": "%%%Guid%%%"}

Hier sagen die Prozentzeichen dem System, dass dies ein Kontextparameterverweis und kein Teil einer Zeichenfolge ist.

Um das System darüber zu informieren, dass Daten in einem Anforderungstext von einer angegebenen Maske analysiert werden müssen, fügen Sie im Feld Skript vorbereiten die ProcessPostDataByMask(currentTask, “Markerzeichen”) hinzu. Andernfalls wird der Kontextparameter ignoriert und als Text übergeben. Im obigen Beispiel würde das Feld Skript vorbereiten die folgende Zeichenfolge enthalten:

ProcessPostDataByMask(currentTask, "%%%");

Dabei hängt der currentTask-Parameter nicht von einem Aufgabennamen ab und weist den Typ der Aufgabe auf, die derzeit verarbeitet wird.