4
votes

Dans POSTMAN, comment obtenir une sous-chaîne de l'élément d'en-tête de réponse?

J'utilise Postman pour obtenir la valeur d'en-tête de réponse comme ci-dessous:

var data = postman.getResponseHeader("Location") . //value is "http://aaa/bbb" for example 

Je peux imprimer la valeur via console.log (data) facilement.

Cependant, ce que je veux vraiment, c'est "bbb". J'ai donc besoin d'un type de fonction substring () . Et apparemment, «data» n'est pas un type de chaîne javascript, car data.substring (10) par exemple renvoie toujours null.

Quelqu'un at-il ce que je dois faire dans ce cas?

Si un document d'API Postman existe qui explique cela?


2 commentaires

est cette erreur exacte ce que vous obtenez?


en fait, seul toString () est nécessaire d'abord pour le convertir en chaîne javascript, puis il est explicite.


3 Réponses :


1
votes

Vous pouvez définir une variable d'environnement dans postman. essayez quelque chose comme

var data = JSON.parse(postman.getResponseHeader("Location"));
postman.setEnvironmentVariable("dataObj", data.href.substring(10));


1 commentaires

non, ce n'est pas la solution, j'ai vu la même solution ailleurs dans SO. mon en-tête ne renvoie pas un objet json.



1
votes

Une première réflexion - j'avais besoin d'une partie spécifique de l'en-tête "Location" comme l'OP, mais je devais également obtenir une valeur spécifique de cette partie spécifique. Mon en-tête ressemblerait à quelque chose comme ceci

​​ https://example.com?code_challenge_method=S256&redirect_uri=https://localhost:8080&response_type=code&state=vi8qPxcvv7I&nonce=uq95j99qBCGgJvrHjGoFtJiBoo

"Et la valeur dont j'ai besoin passer à la requête suivante en tant que variable

var location_header = pm.response.headers.get("Location");
var attributes = location_header.split('&');

console.log(attributes);

var len = attributes.length;
var state_attribute_value = ""
var j = 0;
for (var i = 0; i < len; i++) {
    attribute_key = attributes[i].split('=')[0];
    if (attribute_key == "state") {
        state_attribute_value = attributes[i].split('=')[1];
    }
    j = j + 1;
}
console.log(state_attribute_value);
pm.environment.set("state", state_attribute_value);

Pourriez-vous comprendre le point ici, "split" est le choix pour vous donner un tableau de valeurs. Si le texte que vous divisez donne toujours la même longueur de tableau, il devrait être facile d'attraper le nombre correct


0 commentaires

1
votes

Vous avez toute la flexibilité de JavaScript à portée de main ici, alors divisez simplement la chaîne et utilisez la partie après le dernier /:

var data = pm.response.headers.get("Location").split("/").pop());

Voir l'école W3 documentation de split et pop si vous avez besoin d'exemples plus détaillés de composants internes JavaScript.


0 commentaires