2016-03-15 79 views
2

通过邮差,可以将响应主体中的特殊字段保存到变量中,并在连续调用中使用此变量的值。邮差:如何评估json阵列

例如: 在我的第一次调用Web服务在响应体

[ { 
    "id" : "11111111-1111-1111-1111-111111111111", 
    "username" : "[email protected]", 
}, { 
    "id" : "22222222-2222-2222-2222-222222222222", 
    "username" : "[email protected]" 
} ] 

我添加了一个测试

postman.setGlobalVariable("user_0_id", JSON.parse(responseBody)[0].id); 

现在,我发送一个连续请求返回以下带有URL的webservice

http://example.com/users/{{user_0_id}} 

邮递员评估{{user_0_id}}11111111-1111-1111-1111-111111111111

这工作正常。但现在我添加到我的第一个电话

postman.setGlobalVariable("users", JSON.parse(responseBody)); 

的测试在我的第二个请求的web服务我所说的URL

http://example.com/users/{{users[0].id}} 

但现在{{users[0].id}}无法评估,它保持不变,不换成11111111-1111-1111-1111-111111111111

我该怎么办?呼叫的正确语法是什么?

回答

5

要将数组保存在全局/环境变量中,您必须使用JSON.stringify()。以下是摘自Postman documentation about environments的文章:

环境和全局变量将始终以字符串形式存储。如果您要存储对象/数组,请务必在存储之前使用JSON.stringify(),并在检索时使用JSON.parse()。

如果真的是必要的,你救了整个响应,第一个打电话给我们在测试中是这样的:

var jsonData = JSON.parse(responseBody); 
// test jsonData here 

postman.setGlobalVariable("users", JSON.stringify(jsonData)); 

若要从全局变量检索用户的ID,并用它在请求的URL,你必须分析在第二次调用的请求前脚本全局变量和值添加到“临时变量”来使用它的网址:

postman.setGlobalVariable("temp", JSON.parse(postman.getEnvironmentVariable("users"))[0].id); 

因此,第二个电话的URL将会是b E:

http://example.com/users/{{temp}} 

在第二次调用的测试,确保在年底前清除您的临时变量:

postman.clearGlobalVariable("temp"); 

这应该为你做的伎俩。据我所知,目前没有可能直接在URL中解析全局变量来访问特定条目(例如,您试图使用{{users[0].id}})。