Pendant la configuration de votre moniteur d'API multi-étapes, si vous voulez définir une assertion de vérification de contenu ou extraire une valeur à stocker dans une variable, vous devez spécifier de quelle valeur il s'agit. Les options suivantes sont disponibles :

  • Corps de réponse en JSON : Choisissez cette option si le corps de votre réponse contient des données JSON, et vous voulez inspecter ou capturer un certain élément dans la structure JSON. Dans le champ de propriété de l'assertion ou de la variable, spécifiez l'élément JSON à inspecter.

    Exemple

    Suppose your JSON response has the following content:

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

    Pour capturer la valeur de l'attribut access_token, mettez access_token comme la valeur de la propriété.

    Un autre exemple JSON : supposons que vos données JSON contiennent un tableau d'un ou plusieurs éléments, ici un tableau de trois produits :

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

    Pour accéder à un attribut de l'un de ces produits, nous devons d'abord pointer vers un élément particulier du tableau en fournissant un index. L'indice du premier élément dans un tableau JSON est toujours zéro: [0]. Donc, pour capturer l'attribut Price du premier produit dans notre tableau, nous spécifierions [0].Price.

    Remarque : Si le corps de la réponse ne peut pas être analysé selon les règles JSON, cette fonction générerait une erreur.

  • Corps de réponse en XML : Choisissez cette option si le corps de votre réponse contient un document XML, et spécifiez une requête XPath pour affiner le contenu à inspecter ou à capturer.

    Example

    Supposons que votre réponse XML a le contenu suivant :

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

    Pour capturer la valeur interne du  nœud access_token, utilisez la requête XPath /AuthInfo/access_token/text() comme la valeur de la propriété.

    Si le corps de la réponse ne peut pas être analysé en tant que document XML autonome, si la requête XPath est invalide ou ne sélectionne pas une valeur réelle du document, une erreur sera généré.

  • Corps de réponse en texte brut : si le contenu de votre réponse n'est pas au format JSON ou XML (par exemple, texte brut, HTML ou un format propriétaire), vous pouvez utiliser cette option pour rechercher un contenu. Par défaut, nous considérerons tout le contenu du corps de la réponse. Cela fonctionne bien si vous voulez seulement effectuer une simple recherche de type "contient…" (par exemple : le corps de la réponse doit contenir l'expression "Prix" ; cette vérification sera satisfaite tant que le mot Prix apparaît quelque part dans le contenu). Pour utiliser le contenu entier pour votre assertion ou pour votre définition de variable, laissez le champ de propriété vide.

    Toutefois, si vous souhaitez inspecter ou extraire du contenu à partir d'un emplacement spécifique du document, il faudra définir un moyen pour y parvenir. Pour ce faire, spécifiez une expression régulière dans le champ de propriété. En utilisant les capacités de mise en correspondance des expressions régulières, nous essaierons de trouver une correspondance dans votre contenu, et la première correspondance trouvée sera capturée en tant que valeur.

    Si l'expression régulière contient un groupement à capturer (qui permet de définir un motif à l'intérieur de l'expression régulière), nous utiliserons la première correspondance pour ce groupement capturant.

    Notez que ces options s'appliquent uniquement au contenu textuel (bien qu'elles puissent aussi être appliquées aux réponses contenant du JSON ou XML, puisque ces derniers sont également du texte); la recherche dans du contenu binaire n'est pas prise en charge.

  • Code d'état : Cette option inspecte le code d'état HTTP numérique qui fait partie de chaque réponse HTTP. Dans la plupart des cas, vous vérifierez simplement que le code est égal à 200 (ce qui signifie OK), ou du moins ne représente pas un échec. En fait, nous le ferons pour vous par défaut : si vous ne spécifiez pas d'assertion de code d'état, nous effectuerons automatiquement l'assertion suivante, car les codes 4xx et 5xx sont généralement des codes d'erreur :

    Status code Is less than 400

    Cependant, si vous définissez vous-même une assertion de code d'état, cela remplacera notre vérification par défaut. Par exemple, si vous définissez

    Status code Is equal to 200

    nous vérifierons exactement cette condition.

    Remarque : Il existe un cas particulier lorsque vous ajoutez une assertion de code d'état pour les codes 301, 302, 303, 307 ou 308 (c'est-à-dire un code de redirection). Pour plus d'informations, voir la section Gestion des redirections.

  • Description du code d'état : Cette option examine la description textuelle du code d'état HTTP (formellement appelée reason phrase). Cela peut être utile lorsque vous vérifiez le comportement de certaines conditions d'erreur dans votre API : vous aurez peut-être besoin de vérifier que lorsque vous alimentez votre API avec une donnée incorrecte, une description d'état utile est renvoyée.

  • Réponse terminée : Cette option renvoie toujours une valeur booléenne liée à la réussite ou non de la requête HTTP. Il renvoie false si nous n'avons pas pu déterminer à quel serveur se connecter, si aucune connexion n'a pu être établie, ou si le serveur n'a pas répondu avec une réponse HTTP en temps opportun. Dans tous les autres cas, il retourne true.

    Réponse terminée : Cette option renvoie toujours une valeur booléenne liée à la réussite ou non de la requête HTTP. Il renvoie false si nous n'avons pas pu déterminer à quel serveur se connecter, si aucune connexion n'a pu être établie, ou si le serveur n'a pas répondu avec une réponse HTTP en temps opportun. Dans tous les autres cas, il retourne true.

    Response completed Is equal to true

    Pour certains cas particuliers, il est possible d'utiliser cette vérification à l'envers : si vous spécifiez false à la place de true, nous vérifierons que l'obtention d'une réponse réussie n'est PAS possible. Ceci peut être utile si vous avez une application web ou une API qui ne devrait être disponible que sur votre réseau interne, même si le nom de domaine correspondant est disponible publiquement. Avec cette vérification, nous vérifierons que nous ne pouvons pas atteindre votre API ou votre application web.

  • En-tête de réponse : Cette option vous permet d'inspecter un en-tête de réponse HTTP spécifique. Vous devez spécifier le nom de cet en-tête dans le champ de propriété.

  • Cookie : Cette option renvoie la valeur actuelle d'un cookie. Vous devez spécifier le nom de ce cookie dans le champ de propriété. Notez que les cookies retournés par votre serveur sont traités comme des cookies de session : les valeurs des cookies sont lues, mises à jour et renvoyées à votre serveur pendant l'exécution du scénario entier, jusqu'à la dernière étape. Après, tous les cookies sont supprimés, quelle que soit la directive pour la date d'expiration. Cela signifie que les cookies permanents sont essentiellement traités comme des cookies de session.

  • Longueur du contenu : Cette option renvoie la taille (en octets) du corps de la réponse. Notez qu'il s'agit de la longueur réelle du contenu de la réponse après décompression (si votre serveur l'avait compressé précédemment).

  • Durée : Cette option renvoie la durée totale (en millisecondes) qui a été nécessaire pour l'exécution de la requête et la réception de la réponse. Cela vous permet de surveiller les durées des différentes étapes.