API网关客户端

更新时间:2019-11-29 15:15:36

阿里云IoT网关,是在阿里云API网关的基础上扩展了IoT特殊业务协议的网关实现,目的是通过http/https协议将物联网平台及衍生服务开放给开发者。
API网关客户端是阿里云IoT网关的客户端实现,提供对IoT网关API的便利的访问方法。对API Reference中的API,都可以使用API网关访问。

访问API的另一种形式是通过封装好的SDK,详细参考下一节“智能人居API SDK”。paas-api-sdk是在API网关客户端的基础上封装了智能人居的API。配置认证参数后,可以直接调用所有API,所有API的版本、路径、参考都已经封装好。

使用

源代码

GitHub: https://github.com/aliyun/iotx-api-gateway-client

Maven依赖

<dependency>
    <groupId>com.aliyun.api.gateway</groupId>
    <artifactId>sdk-core-java</artifactId>
    <version>1.1.0</version>
</dependency>
<dependency>
    <groupId>com.aliyun.iotx</groupId>
    <artifactId>iotx-api-gateway-client</artifactId>
    <version>1.0.3</version>
</dependency>

示例

假设您需要访问IoT网关提供的如下API:

接口定义

path: /awss/enrollee/list/get

版本: 1.0.2

描述: 分页查询发现设备列表,用于配网流程

: 是,客户端SDK需启用身份的鉴权

请求参数

参数名称:pageSize,参数类型:Integer,是否必填:是,描述:分页大小

参数名称:pageNum,参数类型:Integer,是否必填:是,描述:页编号

请求示例

{
    "id":"1509086454180",    // 一次请求的标示,用于请求跟踪问题排查,通常用UUID生成
                             // api-gateway-client会自动生成
    "version":"1.0",         // 协议版本,当前版本1.0
    "request":{
        "apiVer":"1.0.2",    // 对应接口定义中的“版本”;
        "iotToken":"token"   // 如果接口支持非登录态,则为空;否则必须填写,
                             // 生成iotToken的方法见XXXX
    },
    "params":{               // 接口参数统一放到params中
        "pageSize":10,
        "pageNum":1
    }
}

代码
假设您已经拥有了访问IoT网关的appKey和appSecret 分别为appkey1appsecret1,通过IoT网关访问如下:

IoTApiClientBuilderParams ioTApiClientBuilderParams = new IoTApiClientBuilderParams();

ioTApiClientBuilderParams.setAppKey("appkey1");
ioTApiClientBuilderParams.setAppSecret("appsecret1");

SyncApiClient syncApiClient = new SyncApiClient(ioTApiClientBuilderParams);

IoTApiRequest request = new IoTApiRequest();
//设置协议版本号
request.setVersion("1.0");
//设置请求ID
request.setId(UUID.randomUUID().toString());
//设置API版本号
request.setApiVer("1.0.2");
//如果需要登陆,设置当前的会话的token,token通过登录api获取
request.setIoTToken("token");
//设置参数
request.putParam("pageSize", 10);
request.putParam("pageNum", 1);

Map<String, String> headers = new HashMap<>(8);

//设置请求参数域名、path、request ,如果使用HTTPS,设置为true
ApiResponse response = syncApiClient.postBody("api.link.aliyun.com", 
                                              "/awss/enrollee/list/get", 
                                              request, true, 
                                              headers);

System.out.println( "response code = " + response.getCode() 
                   + " response = " 
                   + new String(response.getBody(), "UTF-8"));

更详细的信息见GitHub上的文档说明。

results matching ""

    No results matching ""