web-dev-qa-db-fra.com

Ajouter un en-tête à chaque demande dans Postman dans le script de pré-demande

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?

10

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).

9
J.Lin

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'
});
2
ishegg

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

2
satheesh m

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);
});
2
Dragos Durlut

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}}
1
Add080bbA

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")    
});
0
Abhishesh Sharma