1. Ondersteuning
  2. Knowledge Base
  3. Synthetic monitoring
  4. API Monitoring
  5. Multi-step monitoring
  6. Response-validatie
  7. Multi-step API - Source en property

Multi-step API - Assertion Source en property

Als u nog niet bekend bent met assertions of variabelen, raden we u aan de artikelen Assertions en Variabelen te lezen voor een overzicht van hoe ze werken en functioneren. In dit artikel wordt uitgelegd uit hoe u de velden source en property kunt gebruiken om de API-response te valideren.

De velden source en property gaan hand in hand om te identificeren waar de API-response vandaan komt en welke inhoud moet worden gecontroleerd. De source is het beginpunt van waaruit naar de data moet worden verwezen. De property verwijst naar de specifieke inhoud die moet worden gevalideerd.

Deze velden zijn beschikbaar in Response voor zowel Assertions als Variabelen:

Assertions

Variabelen

Hieronder vindt u de beschikbare sources en hoe u de bijbehorende propertywaarde kunt invullen.

Response body als JSON

Selecteer dit sourcetype als u een API-response in JSON-formaat verwacht te ontvangen. Geef in het propertyveld het JSON-element op dat u wilt inspecteren of extraheren.

Voorbeelden

Neem bijvoorbeeld de volgende JSON-response:

{
  "access_token":"MjAxNy0xMC0wMlQxMDoxMDoyNy42NDkwOTEzWg==",
  "token_type":"Bearer",
  "expires_in":86400
}

Om de waarde MjAxNy0xMC0wMlQxMDoxMDoyNy42NDkwOTEzWg== vast te leggen, gebruikt u de access_token als propertywaarde.

Als het object dat de access_token-sleutel bevat een onderliggend object is van een ander JSON-object, specificeert u het volledige JSON-pad. Gebruik in dit geval response.access_token als de propertywaarde:

{
   "response":{
      "access_token":"MjAxNy0xMC0wMlQxMDoxMDoyNy42NDkwOTEzWg==",
      "token_type":"Bearer",
      "expires_in":86400
   }
}

Als uw JSON-data een array bevat met een of meer elementen en u de prijs van het eerste element wilt vastleggen (bijvoorbeeld: 20000), specificeer dan de index gevolgd door de attributenaam. De index van een array begint altijd met nul: [0]. In dit geval moet het propertyveld [0].Price zijn om de waarde van 20000 op te halen.

[
  {
    "Name": "Alpha Cygnus IX",
    "Price": 20000,
  },
  {
    "Name": "Norcadia Prime",
    "Price": 25000,
  },
  {
    "Name": "Risa", 
    "Price": 37500,
  }
]

Als uw JSON een array bevat als onderliggend object van een ander object, moet u elk pad specificeren, inclusief de index voor het element in de array. Stel dat uw JSON iets bevat dat lijkt op:

{
   "Destinations":[
      {
         "Name":"Alpha Cygnus IX",
         "Price":20000
      },
      {
         "Name":"Norcadia Prime",
         "Price":25000
      },
      {
         "Name":"Risa",
         "Price":37500
      }
   ]
}

In dit geval kan de waarde voor de eerste Name worden vastgelegd met Destinations.[0].Name, wat Alpha Cygnus IX is.

Opmerking: Als de response body niet als JSON kan worden geparseerd, genereert deze functie een fout.

Response body als XML

Selecteer dit sourcetype als u een API-response in XML-formaat verwacht te ontvangen. U kunt vervolgens een XPath-query opgeven om specifieke inhoud vast te leggen.

Voorbeelden

Neem bijvoorbeeld de volgende XML-response:

<AuthInfo> 
  <access_token>MjAxNy0xMC0wMlQxMDowOTo1My45MDUxNjEyWg==</access_token> 
  <expires_in>86400</expires_in> 
  <token_type>Bearer</token_type> 
</AuthInfo>

Om de waarde MjAxNy0xMC0wMlQxMDowOTo1My45MDUxNjEyWg== vast te leggen, gebruikt u de XPath-query /AuthInfo/access_token/text() als de propertywaarde. Voor meer informatie over XPath, inclusief SOAP XML, raadpleegt u het artikel XPath-voorbeelden.

Opmerking: Als de response body niet kan worden geparseerd als een zelfstandig XML-document of als de XPath-query ongeldig is en de specifieke waarde uit het document niet identificeert, genereert deze functie een fout.

Response body als tekst

Selecteer dit sourcetype als uw response niet in JSON- of XML-formaat is. Deze optie kan platte tekst, een HTML-bestand of een eigen formaat verwerken om de volledige inhoud te gebruiken.

Dit sourcetype is van toepassing wanneer u een eenvoudige contains-operation wilt uitvoeren, zoals controleren of de response body de tekst Price bevat. De controle slaagt zolang de tekst Price ergens in de inhoud voorkomt. Als u de volledige inhoud wilt gebruiken of wilt toewijzen in een variabele, laat u het propertyveld leeg.

Als u inhoud wilt inspecteren of extraheren van een specifieke locatie in het document, specificeert u een reguliere expressie in het propertyveld. Dit gebruikt een patroon-regex om de specifieke waarde uit uw inhoud vast te leggen.

Als de reguliere expressie een capturing-groep bevat, een patroon tussen haakjes, wordt de eerste match voor die capturing-groep gebruikt.

Opmerking: Deze source is van toepassing op tekstinhoud en kan worden toegepast op responses die JSON of XML bevatten, aangezien deze formaten nog steeds platte tekst zijn. Zoeken naar binaire content wordt niet ondersteund.

Statuscode

Deze optie controleert de numerieke HTTP-statuscode in elke response, zodat u fouten en hun statuscodes kunt identificeren.

Uptrends controleert standaard automatisch op 4xx- en 5xx-codes. Er wordt altijd gecontroleerd of de Statuscode kleiner is dan 400, zelfs als u geen statuscode opgeeft.

Als u zelf een statuscode definieert, overschrijft deze onze standaardcontrole. Als u bijvoorbeeld Statuscode is gelijk aan 200 definieert, controleren we precies die voorwaarde.

Opmerking: Er geldt een speciaal geval wanneer u een statuscode van 301, 302, 303, 307 of 308 toevoegt (bijvoorbeeld een redirect code). Raadpleeg Redirects afhandelen voor meer informatie.

Statusomschrijving

Deze optie controleert de tekstuele beschrijving van de HTTP-statuscode (formeel de Reason-Phrase genoemd). Het biedt extra context bij het verifiëren van bepaalde API-foutcondities. Bijvoorbeeld bij het bevestigen dat u correcte invoer heeft verstrekt, wordt er een nuttige statusomschrijving geretourneerd.

Response compleet

Deze optie retourneert altijd een booleaanse waarde die aangeeft of de HTTP-request succesvol is voltooid.

De response retourneert false als een van de volgende situaties zich voordoet:

  • De server waarmee verbinding moet worden gemaakt, kan niet worden bepaald.
  • De server reageert niet tijdig met een HTTP-response.
  • Er kan geen verbinding tot stand worden gebracht.

Anders wordt true geretourneerd.

In de meeste gevallen hoeft u deze optie niet te specificeren, omdat wij deze automatisch voor u controleren: Response compleet Is gelijk aan true.

Op basis van het sourcetype rapporteren we een fout als er geen HTTP-response kan worden opgehaald van uw server.

In sommige gevallen is het mogelijk om deze controle om te draaien. Als u false opgeeft, controleren we of het niet mogelijk is om een succesvolle response te ontvangen. Dit kan handig zijn als u een webapplicatie of API heeft die alleen binnen uw netwerk beschikbaar zou moeten zijn, zelfs als de bijbehorende domeinnaam openbaar beschikbaar is. Met deze controle verifiëren we dat we uw API of webapp niet kunnen bereiken.

Response header

Met deze optie kunt u een specifieke HTTP-response header inspecteren. U moet de naam van die header opgeven in het propertyveld.

Deze optie retourneert de huidige waarde van een cookie. U moet de naam van die cookie opgeven in het propertyveld. Cookies die door uw server worden geretourneerd, worden behandeld worden als sessiecookies: cookiewaarden worden bewaard, bijgewerkt en teruggestuurd naar uw server tijdens de uitvoering van het volledige scenario, tot aan de laatste stap.

Alle cookies worden vervolgens verwijderd, ongeacht de vervalrichtlijnen, wat betekent dat permanente cookies worden behandeld als sessiecookies.

Content length

Deze optie retourneert de grootte van de response body in bytes. Als de server de response in een gecomprimeerd formaat verzendt, weerspiegelt de waarde de oorspronkelijke inhoudslengte na decompressie.

Duur

Deze optie retourneert de totale tijd, in milliseconden, die nodig was om de request uit te voeren en de response te ontvangen. Hiermee kunt u de performance van afzonderlijke stappen monitoren.

Door deze website te gebruiken, stemt u in met het gebruik van cookies in overeenstemming met ons Cookiebeleid.