设置 Postman 并自动添加 Bearer Tokens
介绍
在实施分布式系统时,您经常会发现您正在跨数十个应用程序和服务工作。此外,这些服务通常通过 REST API 公开其功能,并以不同的方式保护。Postman 是开发人员用来模拟、组织和测试 REST API 的工具。它还提供了许多您可能未充分利用的脚本功能。
在本指南中,您将了解如何使用预请求脚本来获取和附加承载令牌,以便更轻松地测试您的 REST API。本指南将使用 oauth2 客户端凭据流程作为激励示例,因为它是一种常见的 REST API 身份验证类型。
了解如何在 Postman 中组织请求
Postman 允许您将请求组织成三个层次:
工作区是 Postman 组织层次结构的根源。它们是共享上下文,允许团队成员协作、设置不同的环境并将变量附加到这些环境。2. 集合位于工作区内,可以通过触发其所有子请求和保存变量以及请求前和请求后脚本来执行。3. 文件夹位于集合内,也可以拥有自己的请求前和请求后脚本。
这种层次结构有两个主要优点:
- 它可以帮助您组织您的请求
- 它可以帮助您共享常见功能,例如在请求之间获取 ouath2 访问令牌
就本指南的目的而言,您对第二个好处感兴趣。由于集合、文件夹和请求都可以配置预请求脚本,因此适当地组织您的请求可以帮助您减少代码重复。
因此,您可能需要按如下所示组织您的请求:
orders-collection
- GET v1/orders
- POST v1/orders
products-collection
- GET v1/products
您已为每个 API 创建了一个集合。在每个集合中,保存该 API 所具有的每个端点的 Postman 请求。每个集合可以有一个单独的预请求脚本来附加授权标头。如果每个 API 都需要不同的凭据,这将非常有用。每个组件下添加的任何其他端点都将自动继承其父集合的设置。
注意:如果您想要交互的 API 有 OpenAPI 文档,则可以使用Postman 的官方 OpenAPI 集成自动生成。
将脚本附加到集合
一旦您的请求被适当地组织起来,您就可以开始附加预请求脚本。您需要将脚本附加到集合中,以便集合中的请求可以在任何配置中自动执行脚本。
要使用 client_credentials 获取 oauth2 令牌,您将使用以下脚本:
const tokenUrl = 'https://authority.com/connect/token';
const clientId = 'xxxxxx';
const clientSecret = 'xxxxxx';
const getTokenRequest = {
method: 'POST',
url: tokenUrl,
body: {
mode: 'formdata',
formdata: [
{ key: 'grant_type', value: 'client_credentials' },
{ key: 'client_id', value: clientId },
{ key: 'client_secret', value: clientSecret }
]
}
};
pm.sendRequest(getTokenRequest, (err, response) => {
const jsonResponse = response.json();
const newAccessToken = jsonResponse.access_token;
pm.variables.set('access_token', newAccessToken);
});
上述脚本向您的身份提供商发出请求以获取持有者令牌。然后,它读取响应并将其保存到名为access_token的变量中。
确保每个端点的授权详细信息都配置为“从父级继承身份验证”并保存在正确的位置。
注意:根据您的身份提供商的配置方式,您可能需要传递额外的参数。例如,某些提供商可能要求您明确指定请求的范围。
处理不同的环境
您可能希望使用相同的集合访问不同的环境。Postman 具有此功能。它允许您存储一组变量并切换请求的上下文。您还可以使用此功能根据环境更改凭据和身份提供者。为此,请修改您的脚本,如下所示:
let tokenUrl;
let clientId;
let clientSecret;
if (pm.environment.name === 'development') {
const tokenUrl = 'https://development-authority.com/connect/token';
const clientId = 'xxxxxx';
const clientSecret = 'xxxxxx';
else if (pm.environment.name === 'staging') {
const tokenUrl = 'https://staging-authority.com/connect/token';
const clientId = 'yyyyyy';
const clientSecret = 'yyyyyy';
}
const getTokenRequest = {
method: 'POST',
url: tokenUrl,
body: {
mode: 'formdata',
formdata: [
{ key: 'grant_type', value: 'client_credentials' },
{ key: 'client_id', value: clientId },
{ key: 'client_secret', value: clientSecret }
]
}
};
pm.sendRequest(getTokenRequest, (err, response) => {
const jsonResponse = response.json();
const newAccessToken = jsonResponse.access_token;
pm.variables.set('access_token', newAccessToken);
});
结论
测试 API 是开发周期中的一个重要部分。通过使用 Postman 等工具设置脚本来自动执行琐碎的任务,您可以让您的工作更加愉快。下一步,您可能想尝试编写脚本来自动使用云服务(例如 Amazon Web Services 或 Microsoft Azure)进行身份验证。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~