# 使用Postman调测
#### 概述
Postman是网页调试与辅助接口调用的工具，具有界面简洁清晰、操作方便快捷的特性，可以处理用户发送的HTTP请求，例如：GET，PUT、POST，DELETE等，支持用户修改HTTP请求中的参数并返回响应数据。
为充分了解接口，建议提前获取[应用侧API参考](https://support.huaweicloud.com/api-iothub/iot_06_v5_0001.html)查阅。我们已经写好了Postman的collection，在Collection中接口的请求结构体已经完成可以直接使用。
本文档以Postman为例，模拟应用服务器以HTTPS协议接入物联网平台，调测以下API接口：
- ["获取IAM用户Token"接口]
- ["查询IAM用户可以访问的项目列表"接口]
- ["创建产品"接口]
- ["查询产品"接口]
- ["创建设备"接口]
- ["查询设备"接口]
 
#### 前置条件
- 下载并安装Postman。若未安装，请参考[安装Postman]进行安装。
- 下载[Collection](https://developer.obs.cn-north-4.myhuaweicloud.com/manage/tool/PostmanCollection/Collection_environment_of_postman_V5.zip)。
- 已在[管理控制台](https://console.huaweicloud.com/iotdm/#/dm-portal/home)完成[产品模型](https://support.huaweicloud.com/devg-iothub/iot_01_0063.html)和[编解码插件](https://support.huaweicloud.com/devg-iothub/iot_02_0156.html)的开发。
 
 #### 安装并配置Postman
1. 安装Postman。 
   1. 访问[Postman官网](https://dl.pstmn.io/download/latest/win64)，下载并安装Windows 64位Postman最新版本。
      ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0243578411.jpg "点击放大")
      ![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
      - 安装Postman依赖.NET Framework 4.5组件。
      
      - 如需下载Windows 32位Postman最新版本，访问[此处](https://www.postman.com/ https://dl.pstmn.io/download/latest/win32)下载。
        
   
   2. 填写邮箱、用户名和密码注册Postman。
   
   
   
   
2. 导入Postman环境变量。 
   1. 单击右上角的![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0188338133.png)图标，打开"MANAGE ENVIRONMENTS"窗口。
      ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0188337705.png "点击放大")
      
   
   2. 单击"Import"，在弹出的页面中，单击"选择文件"，导入**IoTDA.postman_environment.json** 文件（下载**[Collection](https://developer.obs.cn-north-4.myhuaweicloud.com/manage/tool/PostmanCollection/Collection_environment_of_postman_V5.zip)** 解压后获取）。
      ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0188337797.png "点击放大")
      
   
   3. 单击导入的"**IoTDA** "环境。
      ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0253933811.png "点击放大")
      
   
   4. 参考下表修改以下参数。 ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0253939866.png "点击放大")
      
      | 参数名           | 参数说明                                                                                                                                 |
      |:---|:---|
      | IAMEndpoint   | IAM终端节点，参考[IAM地区和终端节点](https://developer.huaweicloud.com/endpoint?IAM)获取。                                                          |
      | IoTDAEndpoint | 物联网平台终端节点，参考[2.e]。                                                                      |
      | IAMUserName   | IAM用户名，参考[我的凭证](https://console.huaweicloud.com/iam/?agencyId=7c10e4f5f39e4860870661bfd7e54257&locale=zh-cn#/mine/apiCredential)获取。 |
      | IAMPassword    | 登录华为云的密码。                                                                                                                            |
      | IAMDoaminId    | 账号名，参考[我的凭证](https://console.huaweicloud.com/iam/?agencyId=7c10e4f5f39e4860870661bfd7e54257&locale=zh-cn#/mine/apiCredential)获取。     |
      | region          | 开通设备接入服务的区域，参考[物联网平台终端节点](https://developer.huaweicloud.com/endpoint?IoTDA)获取。                                                       |
         
      
   
   5. IoTDAEndpoint参考。
      进入控制台，选择左侧导航栏"总览"，单击"实例基本信息-接入信息"，根据相应的接入类型和协议选择对应的接入地址。
      图1总览-获取接入信息   
      ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002510383014.png "点击放大") 
   
   6. 返回主页，选择环境变量为刚导入的"**IoTDA**"。
   
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0253940365.png "点击放大")
   
   
3. 单击左上角的"Import"，单击"Choose Files"导入"**应用侧API调用（V5版本）.postman_collection.json** "。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001071717339.png "点击放大")
   导入成功后，显示如下。
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0253942520.png "点击放大")
   
   
 
 #### 调测"获取IAM用户Token"接口
在访问物联网平台业务接口前，应用服务器需要调用"获取IAM用户Token"接口鉴权，华为云认证通过后向应用服务器返回鉴权令牌**X-Subject-Token**。
应用服务器需要构造一个HTTP请求，请求示例如下：
```
POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 
Content-Type: application/json 
{ 
    "auth": { 
        "identity": { 
            "methods": [ 
                "password" 
            ], 
            "password": { 
                "user": { 
                    "name": "username", 
                    "password": "********", 
                    "domain": { 
                        "name": "domainname" 
                    } 
                } 
            } 
        }, 
        "scope": { 
            "project": { 
                "name": "xxxxxxxx" 
            } 
        } 
    } 
}
```
参考API文档，调测[获取IAM用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口。
1. 配置"获取IAM用户Token"接口的**HTTP** 方法、**URL** 和**Headers** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228076446.png "点击放大")
   
   
2. 配置"获取IAM用户Token"接口的**Body** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228076452.png "点击放大")
   
   
3. 单击"Send"，在下方查看返回码和响应消息内容。 
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228205577.png "点击放大")
   
   
4. 请将返回头域中的的**X-Subject-Token** 更新到"**IoTDA** "环境的"**X-Auth-Token** "参数中，以便于在调用其它接口时使用。若超过令牌有效时间，需要重新调用鉴权接口。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0253954865.png "点击放大")
   这里我们已经在postman中自动更新了"**X-Auth-Token**"参数，使用时无需手动操作。
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228206888.png "点击放大")
   
   
 
 #### 调测"查询IAM用户可以访问的项目列表"接口
在访问物联网平台业务接口前，应用服务器需要调用"查询IAM用户可以访问的项目列表"接口获取用户的项目ID，用于后续访问物联网平台业务接口。
应用服务器需要构造一个HTTP请求，请求示例如下：
```
GET https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects
Content-Type: application/json
X-Auth-Token: ********
```
参考API文档，调测[查询IAM用户可以访问的项目列表](https://support.huaweicloud.com/api-iam/iam_06_0003.html)接口。
1. 配置"查询IAM用户可以访问的项目列表"接口的**HTTP** 方法、**URL** 和**Headers** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228239057.png "点击放大")
   
   
2. 单击"Send"，在下方查看返回码和响应消息内容。 
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228239539.png "点击放大")
   
   
3. 返回**body** 中包含一个**projects** 列表，查找其中"**name** "参数值与"**IoTDA** "环境中"**region** "参数值相同的条目，取其"**id** "参数值更新到"**IoTDA** "环境中"**project_id** "参数，以便于在调用其它接口时使用。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228272251.png "点击放大")
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0253960029.png "点击放大")
   
   这里我们已经在postman中自动更新了"**project_id**"参数，使用时无需手动操作。
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0228310854.png "点击放大")
   
   
 
 #### 调测"创建产品"接口
在设备接入物联网平台前，应用服务器需要调用此接口创建产品，后续注册设备时需要使用这里创建的产品。
应用服务器需要构造一个请求，请求示例如下：
```
POST https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/products
Content-Type: application/json
X-Auth-Token: ********
{
  "name" : "Thermometer",
  "device_type" : "Thermometer",
  "protocol_type" : "MQTT",
  "data_format" : "binary",
  "manufacturer_name" : "ABC",
  "industry" : "smartCity",
  "description" : "this is a thermometer produced by Huawei",
  "service_capabilities" : [ {
    "service_type" : "temperature",
    "service_id" : "temperature",
    "description" : "temperature",
    "properties" : [ {
      "unit" : "centigrade",
      "min" : "1",
      "method" : "R",
      "max" : "100",
      "data_type" : "decimal",
      "description" : "force",
      "step" : 0.1,
      "enum_list" : [ "string" ],
      "required" : true,
      "property_name" : "temperature",
      "max_length" : 100
    } ],
    "commands" : [ {
      "command_name" : "reboot",
      "responses" : [ {
        "response_name" : "ACK",
        "paras" : [ {
          "unit" : "km/h",
          "min" : "1",
          "max" : "100",
          "para_name" : "force",
          "data_type" : "string",
          "description" : "force",
          "step" : 0.1,
          "enum_list" : [ "string" ],
          "required" : false,
          "max_length" : 100
        } ]
      } ],
      "paras" : [ {
        "unit" : "km/h",
        "min" : "1",
        "max" : "100",
        "para_name" : "force",
        "data_type" : "string",
        "description" : "force",
        "step" : 0.1,
        "enum_list" : [ "string" ],
        "required" : false,
        "max_length" : 100
      } ]
    } ],
    "option" : "Mandatory"
  } ],
  "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka"
}
```
参考API文档，调测物联网平台[创建产品](https://support.huaweicloud.com/api-iothub/iot_06_v5_0050.html)接口。
**注**：在以下步骤中，只呈现样例调测用到的参数。
1. 配置"创建产品"接口的**HTTP方法** 、**URL** 和**Headers** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241931171.png "点击放大")
   
   
2. 配置"创建产品"接口的**BODY。**
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241926310.png "点击放大")
   
   
3. 单击"Send"，在下方查看返回码和响应消息内容。 
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241928131.png "点击放大")
   
   
4. 将返回的"**product_id** "更新到"**IoTDA** "环境中的"**product_id** "参数中，用于后续其它接口使用。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241928178.png "点击放大")
   注：在postman中自动更新了"**product_id**"参数，使用时无需手动操作。
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241932259.png "点击放大")
   
   
 
 #### 调测"查询产品"接口
应用服务器如果需要查询之前创建的产品详情，可以调用此接口。
应用服务器需要构造一个请求，请求示例如下：
```
GET https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/products/{product_id}
Content-Type: application/json
X-Auth-Token: ********
```
接下来参考API文档，调测物联网平台[查询产品](https://support.huaweicloud.com/api-iothub/iot_06_v5_0052.html)接口。
**注**：在以下步骤中，只呈现样例调测用到的参数。
1. 配置"查询产品"接口的**HTTP方法** 、**URL** 和**Headers** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241932356.png "点击放大")
   
   
2. 单击"Send"，在下方查看返回码和响应消息内容。 
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241928709.png "点击放大")
   
   
 
 #### 调测"创建设备"接口
在设备接入物联网平台前，应用服务器需要调用此接口在物联网平台创建设备。在设备接入物联网平台时携带设备唯一标识，完成设备的接入认证。
应用服务器需要构造一个HTTP请求，请求示例如下：
```
POST https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/devices
Content-Type: application/json
X-Auth-Token: ********
{
  "node_id" : "ABC123456789",
  "device_name" : "dianadevice",
  "product_id" : "b640f4c203b7910fc3cbd446ed437cbd",
  "auth_info" : {
    "auth_type" : "SECRET",
    "secure_access" : true,
    "fingerprint" : "********",
    "secret" : "********",
    "timeout" : 300
  },
  "description" : "watermeter device"
}
```
参考API文档，调测物联网平台[创建设备](https://support.huaweicloud.com/api-iothub/iot_06_v5_0046.html)接口。
**注**：在以下步骤中，只呈现样例调测用到的参数。
1. 配置"创建设备"接口的**HTTP方法** 、**URL** 和**Headers** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241932458.png "点击放大")
   
   
2. 配置"创建设备"接口的**Body** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001954823626.png "点击放大")
   
   
3. 单击"Send"，在下方查看返回码和响应消息内容。 
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001990305145.png "点击放大")
   
   
4. 请将返回的"**device_id** "更新到"**IoTDA** "环境中的"**device_id** "参数中，用于后续其它接口使用。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241934276.png "点击放大")
   注意：在postman中自动更新了"**device_id**"参数，使用时无需手动操作。
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241935241.png "点击放大")
   
   
 
 #### 调测"查询设备"接口
应用服务器需要查询在物联网平台创建的设备详情时，可以调用此接口。
应用服务器需要构造一个HTTP请求，请求示例如下：
```
GET https://iotda.cn-north-4.myhuaweicloud.com/v5/iot/{project_id}/devices/{device_id}
Content-Type: application/json
X-Auth-Token: ********
```
参考API文档，调测物联网平台[查询设备](https://support.huaweicloud.com/api-iothub/iot_06_v5_0055.html)接口。
**注**：在以下步骤中，只呈现样例调测用到的参数。
1. 配置"查询设备"接口的**HTTP方法** 、**URL** 和**Headers** 。
   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0241935333.png "点击放大")
   
   
2. 单击"Send"，在下方查看返回码和响应消息内容。 
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001954828330.png "点击放大")
   
   
 
