Postman使用小技巧 - 用Postman生成Request代码

本文介绍如何使用Postman工具快速配置并生成不同编程语言的HTTP请求代码,包括Java和JavaScript等,适用于手动测试Web API场景。

原博文地址:http://blog.youkuaiyun.com/u013613428/article/details/51577209

Postman这款工具可以让你很方便的测试你的Web API,那如果你实在是没办法用Postman,必须手写代码,又或者你有别的需求是Postman没法实现的,你必须写一个特殊的script或App来测试你的接口,那这时候是不是Postman就没有用武之地了? 
我来个你share一个小技巧吧,管不管用你说的算。 
假设我现在要这样来测我的接口: 
我们要设置用户名和密码: 
这里写图片描述 
我们要设置参数和Header: 
这里写图片描述 
如果让你写代码来生成这个HTTP Request是不是感觉有点麻烦? 如果你也是个懒人,就打开Postman,配好你想要的HTTP Request,然后点击上图中的Generate Code吧,在弹出的窗口里面,你可以看到这条Request在各种语言里面的对应写法,比如Java OK HTTP: 
这里写图片描述

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://maps.googleapis.com/maps/api/geocode/json?Address=%E4%B8%AD%E5%9B%BD%E5%9B%9B%E5%B7%9D%E6%88%90%E9%83%BD%E5%B8%82%E5%A4%A9%E5%8D%8E%E4%B8%80%E8%B7%AF&sensor=true")
  .get()
  .addHeader("accept", "application/xml")
  .addHeader("cache-control", "no-cache")
  .addHeader("pragma", "text/cmd")
  .addHeader("postman-token", "6f00b02c-419f-9b98-f2d3-942ddd1ba081")
  .build();

Response response = client.newCall(request).execute();
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

比如JavaScript AJAX:

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://maps.googleapis.com/maps/api/geocode/json?Address=%E4%B8%AD%E5%9B%BD%E5%9B%9B%E5%B7%9D%E6%88%90%E9%83%BD%E5%B8%82%E5%A4%A9%E5%8D%8E%E4%B8%80%E8%B7%AF&sensor=true",
  "method": "GET",
  "headers": {
    "accept": "application/xml",
    "cache-control": "no-cache",
    "pragma": "text/cmd",
    "postman-token": "c7d566f4-0e21-9680-e47f-667b3e65280d"
  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});
<think>我们正在讨论如何在Postman请求中设置变量。根据提供的引用和一般知识,我们可以分步骤说明。 引用[1]提到变量是Postman中最强大的功能之一,使用变量可以避免重复请求,节省时间。 引用[2]简要介绍了如何使用Postman管理API,包括在GUI中设置请求方法、头、体等,并提到保存按钮。 在Postman中设置请求变量的方法有多种,包括: 1. 通过环境变量(Environment Variables)或全局变量(Global Variables)在请求的URL、参数、头、体等地方使用。 2. 在脚本中(预请求脚本或测试脚本)设置变量。 步骤: 1. 定义变量: - 环境变量:在Environments中创建,可以针对不同环境设置不同值。 - 全局变量:在Globals中创建,对所有请求都有效。 - 局部变量:在脚本中定义,只在当前请求的上下文中有效。 2. 在请求中使用变量: - 语法:`{{variable_name}}` - 例如:在URL中,可以 `{{base_url}}/endpoint`;在请求头中,可以设置 `Authorization: {{token}}`;在请求体中,也可以使用变量。 3. 通过脚本设置变量(动态设置): - 在“Pre-request Script”标签页中,可以编JavaScript代码来设置变量。 - 例如:`pm.environment.set("variable_key", "variable_value");` 设置环境变量。 - 或者:`pm.globals.set("variable_key", "variable_value");` 设置全局变量。 4. 从响应中提取变量(在测试脚本中): - 在“Tests”标签页中,可以编脚本从响应中提取数据并保存为变量。 - 例如:`var jsonData = pm.response.json(); pm.environment.set("token", jsonData.token);` 示例: 假设我们有一个登录请求,我们需要将登录返回的token用于后续请求。 1. 在登录请求的Tests脚本中: ```javascript var jsonData = pm.response.json(); pm.environment.set("auth_token", jsonData.token); ``` 2. 在后续请求的请求头中,可以这样设置: ```json { "Authorization": "Bearer {{auth_token}}" } ``` 另外,我们还可以在集合(Collection)级别设置变量,这些变量对该集合中的所有请求都可用。 注意事项: - 变量作用域:环境变量>全局变量>局部变量(局部变量优先级最高,但作用域最小)。 - 变量可以在多个地方定义,但要注意覆盖问题。 根据以上内容,我们可以生成相关问题。 §§相关问题§§ 1. 如何在Postman中管理不同的环境变量? 2. 如何从Postman的响应中提取数据并设置为变量? 3. Postman中的变量作用域有哪些?它们的优先级如何? 4. 如何在Postman的预请求脚本中设置动态变量?</think>### 如何在Postman请求中设置变量 在Postman中设置请求变量是提高API测试效率的核心功能,以下是详细操作步骤: #### 1. **定义变量作用域** - **环境变量**:针对特定环境(如开发/生产环境) `Environments → Create New → 添加键值对(如 base_url: "https://api.example.com")` - **全局变量**:所有请求共享 `Globals → 添加键值对(如 api_key: "12345")` - **局部变量**:仅当前请求使用 在请求脚本中通过 `pm.variables.set("var_name", value)` 定义[^1] #### 2. **在请求中使用变量** 语法:`{{变量名}}` - **URL 中**:`{{base_url}}/users` - **Headers 中**:`Authorization: Bearer {{token}}` - **Body 中**(JSON): ```json { "id": {{user_id}}, "name": "{{username}}" } ``` #### 3. **动态设置变量** 通过脚本动态生成值: - **预请求脚本**(Pre-request Script): ```javascript // 设置时间戳变量 pm.environment.set("timestamp", new Date().getTime()); // 生成随机ID pm.variables.set("request_id", Math.floor(Math.random() * 1000)); ``` - **测试脚本**(Tests):从响应中提取值 ```javascript // 提取登录返回的token const response = pm.response.json(); pm.environment.set("auth_token", response.access_token); ``` #### 4. **变量优先级规则** | 变量类型 | 作用域 | 优先级 | |----------------|----------------|--------| | 局部变量 | 当前请求 | 最高 | | 环境变量 | 选定环境 | 中 | | 全局变量 | 所有请求 | 低 | > 同名变量时,局部变量会覆盖其他变量[^1] #### 5. **调试技巧** - 查看实时值:`Console → 输入 pm.variables.toObject()` - 强制刷新:右上角 ⚡ 图标清除缓存 - 作用域测试:通过 `pm.environment.get("var")` 或 `pm.globals.get("var")` 验证值 --- ### 操作示例 假设需要测试用户API: 1. 创建环境变量 `base_url: "https://dev-api.example.com"` 2. 在GET请求URL中使用:`{{base_url}}/users/{{user_id}}` 3. 在预请求脚本设置动态ID: ```javascript // 生成1-100的随机ID pm.variables.set("user_id", Math.floor(Math.random() * 100) + 1); ``` 4. 在Tests脚本保存响应数据: ```javascript const userData = pm.response.json(); pm.environment.set("last_user_email", userData.email); // 供后续请求使用 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值