Je veux ajouter automatiquement un en-tête à chaque demande de toute ma collection en utilisant ce script de pré-demande:
pm.request.headers.add({
'key': "myvar",
'value': pm.environment.get("myvar")
});
myvar est une variable d'environnement.
Malheureusement, cela ne fonctionne pas. Ai-je oublié quelque chose?
Il semble que pm.request.headers.add()
ne mette actuellement pas à jour la demande envoyée. Il a été marqué comme une demande de fonctionnalité: https://github.com/postmanlabs/postman-app-support/issues/4631
Vous savez peut-être déjà que vous pouvez créer des en-têtes prédéfinis (à partir de la liste déroulante Préréglages) pour faciliter la définition de vos en-têtes. Et il y a quelques options sous Paramètres pour inclure des en-têtes spécifiques. Mais ces suggestions n'ajoutent pas automatiquement un en-tête à chaque demande de la collection entière comme vous le demandez.
MISE À JOUR: Postman a ajouté la prise en charge de cela dans Postman App (v7.0.9).
Depuis Postman v7.0.9 , cela est désormais possible en ajoutant un script de pré-demande sur une collection.
Pour ce faire, accédez à votre collection, cliquez dessus avec le bouton droit, sélectionnez Modifier et accédez à Pre-request Scripts
onglet, où vous pouvez ajouter votre extrait, à savoir:
pm.request.headers.add({
key: 'X-HEADER-TEST',
value: '1'
});
Je pense que vous pouvez essayer de cette façon:
// Add or update an existing header
pm.request.headers.upsert({
'key': "myvar",
'value': pm.environment.get("myvar")
});
Cela a été mis à jour dans Postman App (v7.0.9). Pour plus de référence, vous pouvez vous référer à: https://github.com/postmanlabs/postman-app-support/issues/1947
Ceci a copié d'ici, mais cela a fonctionné pour moi
https://Gist.github.com/madebysid/b57985b0649d3407a7aa9de1bd32799
pm.sendRequest({
url: "https://mydomain/ers/config/endpoint",
method: 'GET',
header: {
'content-type': 'application/json',
'accept': 'application/json',
//'x-site-code': pm.environment.get("x-site-code")
'X-CSRF-TOKEN': 'fetch'
},
body: {
mode: 'raw'//,
raw: JSON.stringify({ email: pm.environment.get("email"), password: pm.environment.get("password") })
}
}, function (err, res) {
pm.environment.set("X-CSRF-TOKEN", "Bearer " + res.json().token);
});
Dans la section test de la connexion, utilisez ce script pour mémoriser le jeton dans l'environnement
var jsonData = JSON.parse(responseBody);
tests["Body contains result"] = responseBody.has("result");
var result = jsonData.result
tests["result contains user"] = result.user !== null
var user = result.user
tests["result contains token"] = result.token !== null
var token = result.token
var accessToken = token.accessToken
var refreshToken = token.refreshToken
postman.setEnvironmentVariable("accessToken", accessToken);
postman.setEnvironmentVariable("refreshToken", refreshToken);
dans chaque appel nécessitant un jeton, utilisez un jeton comme celui-ci dans la section d'en-tête
Authorization = Bearer {{accessToken}}
Cela fonctionne certainement. Desserrez les virgules inversées sur la clé et la valeur
pm.request.headers.add({
key: "myvar",
value: pm.environment.get("myvar")
});