更新时间:2024-12-18 GMT+08:00

通过API工具调用APP认证方式的API

APP认证方式的API接口可以分别绑定不同的应用,安全级别最高。如果您需要API工具调用APP认证方式的API,则需要先通过JavaScript SDK包中的demo.html手动生成认证信息,再使用API工具调用。

本章节以Postman工具为例,为您介绍如何使用API工具调用APP认证方式的API,主要包含如下几步:
  1. 获取APP和API信息:准备APP和API关键信息,用于API调用。
  2. 获取JavaScript SDK包:下载JavaScript SDK包并进行完整性校验。
  3. 生成认证信息:通过JavaScript SDK包中的demo.html手动生成认证信息。
  4. 调用API:通过Postman工具调用API。

前提条件

  • 已完成APP认证方式的API或API工作流的发布,在服务目录中可以查看已发布的API。
  • 已完成创建应用并将API授权给应用,即API开发者已完成通过应用授权APP认证方式API,或API调用者已完成申请API授权
  • 如果API中入参定义了Static参数,则在API授权时已配置Static参数值。
  • 本章以Postman工具为例,因此需要已安装Postman工具,如果未安装,请至Postman官方网站下载。

约束与限制

  • APP认证方式的API调用前必须先完成通过应用授权APP认证方式API申请API授权操作。
  • 如果API中入参定义了Static参数,则在API授权时应配置Static参数值,否则API工具调用时会导致缺少Static参数值的报错。
  • 如需在本地调用专享版API,则需在创建专享版集群时绑定一个弹性公网IP,作为实例的公网入口。
  • 通过demo.html手动生成的认证信息,有效期为15分钟,超时则失效。
  • 调用数据服务API时,如果查询及返回数据的总时长超过默认60秒则会报超时错误。此时可通过访问日志中的API调用时长信息,根据超时阶段进一步优化API配置。
    ____________Duration information__________ 
    duration: 60491ms //总耗时
    url_duration: 0ms //URL匹配耗时
    auth_duration: 70ms //鉴权耗时
    befor_sql_duration: 402ms //执行SQL预处理耗时
    sql_duration: 60001ms //SQL执行耗时
    after_sql_duration:18ms //执行SQL后处理耗时

获取APP和API信息

  1. 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。
  2. DataArts Studio控制台首页,选择对应工作空间的“数据服务”模块,进入数据服务页面。
  3. 在左侧导航栏选择服务版本(例如:专享版),进入总览页。
  4. 获取API授权应用的AppKey和AppSecret(如已授权多个APP,获取其中一个APP信息即可)。

    在左侧导航栏中进入应用管理,找到API授权的应用,并单击应用名称查看APP的完整信息,保存AppKey和AppSecret。

    图1 保存AppKey和AppSecret信息

  5. 获取待调用API的调用地址、请求方法和入参信息。

    在左侧导航栏中进入API管理,找到待调用的API,并单击API名称查看API的完整信息,保存调用地址、请求方法和入参信息。

    • 调用地址:专享版支持内网地址和外网地址(外网地址需要您在创建集群时绑定弹性IP),如果需要在本地调用专享版API,需要使用外网地址,确保网络互通。
    • 入参:本调用样例中创建了一个具备各类入参位置的API,以便为您介绍各类入参应如何在调用时输入。由于Static是不随API调用者的传值变化的静态参数,因此无需在调用时输入,不需要关注。
      图2 保存调用地址、请求方法和入参信息

获取JavaScript SDK包

  1. 在数据服务页面,单击左侧导航栏的SDK,然后下载JavaScript SDK。

    图3 下载JavaScript SDK

  2. 进行SDK包完整性校验。Windows操作系统下,打开本地命令提示符框,输入如下命令,在本地生成已下载SDK包的SHA256值,其中,“D:\javascript-sdk.zip”为SDK包的本地存放路径和SDK包名,请根据实际情况修改。

    certutil -hashfile D:\javascript-sdk.zip SHA256

    命令执行结果示例,如下所示:

    SHA256 的 D:\javascript-sdk.zip 哈希:
    43da0b54d6b04d1f5ed7f278c2918c2a63a1ddb8048e2d1c5db60baafb17663c
    CertUtil: -hashfile 命令成功完成。

    对比所下载SDK包的SHA256值和命令示例中的SHA256值。如果一致,则表示下载过程不存在篡改和丢包。

生成认证信息

  1. 解压SDK包,双击打开其中的“demo.html”文件,输入如下参数后,单击“Send request”查看返回值。

    • Key、Secret:API授权应用的AppKey和AppSecret,可参考获取APP和API信息获取。
    • Method、Url:API的请求方法和调用地址,可参考获取APP和API信息获取。

      注意如果入参中包含Path和Query参数,则需要将调用地址中的{path}变量修改为Path参数具体取值,Query参数取值以“?Query参数名=Query参数值”的形式添加到调用地址的最后,如本例中为“?query=1”。

    • Headers:Headers参数无需填写,即使已定义Header参数,此处也要保持为空。
    • Body:使用大括号{}将“"Body参数名":Body参数值”形式的字符串包围在内,如本例中为“{"body":4}”。
    图4 手动生成认证信息

  2. 从返回值中分别保存X-Sdk-Date、Authorization和X-Authorization的内容,例如本例中需要复制如下内容:

    ...
    X-Sdk-Date: 202********55Z
    ...
    Authorization: SDK-HMAC-SHA256 Access=4e7********d6c, SignedHeaders=host;x-sdk-date, Signature=4bf2********4e2
    X-Authorization: SDK-HMAC-SHA256 Access=4e72********d6c, SignedHeaders=host;x-sdk-date, Signature=4bf2********4e2
    ...

调用API

  1. 打开Postman工具,新增一个API请求。
  2. API请求配置如下。

    • 请求方法和调用地址:参考获取APP和API信息获取,与生成认证信息中的请求方法和调用地址保持一致。
      图5 请求方法和调用地址
    • Params:如果Query参数已经以“?Query参数名=Query参数值”的形式添加到调用地址的最后,则此处会自动生成Query Params的值,否则就需要手动输入。
      图6 Params
      如果您需要对调用结果进行自定义调整,则还可以配置如下Query参数:
      • (可选)分页配置:默认情况下,对于配置方式和默认分页的脚本/MyBatis方式API,系统将默认赋值返回量。如果需要获取特定分页数据,您可以修改如下参数设置分页,其中pageSize表示分页后的页面大小,pageNum表示页码。
        图7 分页参数设置

        自定义分页的脚本/MyBatis方式API是在创建API时将分页逻辑写到取数SQL中,因此不支持在调用时修改分页设置。

      • (可选)排序配置:默认情况下,系统会根据排序参数信息给出默认排序情况,自定义排序默认为升序。如果需要修改排序情况,您可以修改pre_order_by参数。其中排序参数描述pre_order_by的值填写形式为“排序参数参数名:ASC”或“排序参数参数名:DESC”,其中ASC表示升序,DESC表示降序,多个排序参数描述以“英文分号”进行分隔。
        图8 排序参数设置
        对于pre_order_by的值,您可以进行如下修改:
        • 删掉某可选的排序参数,则此排序参数不再参与排序。
        • 修改自定义排序方式的排序参数为升序或降序方式,则此排序参数按照修改后的排序方式排序。
        pre_order_by的值,不支持进行如下修改,否则会修改不生效或导致调用报错。
        • 删掉某必选的排序参数,则此排序参数依然会正常参与排序,删除不生效。
        • 调整排序参数的前后顺序,则排序依然以配置方式API配置排序参数时的排序参数顺序或脚本/MyBatis方式API SQL中的排序参数顺序为准,调整不生效。
        • 修改升序或降序的排序参数为其他排序方式,则会调用失败,不允许修改。
      • (可选)“返回总条数”配置:在创建API时,如果已打开“返回总条数”开关,则当API对应的数据表数据量较大时,获取数据总条数将会比较耗时。此时,如果需要在调用时不计算并返回数据总条数,可以修改use_total_num参数。use_total_num参数用于控制是否计算并返回数据总条数,值为1返回数据总条数,值非1不返回数据总条数。
        图9 “返回总条数”参数配置
    • Headers:将2中保存的X-Sdk-Date、Authorization和X-Authorization及其值依次填入,并将Header参数的参数名和参数值填入其中。

      默认情况下,Postman工具会自动勾选Host并从URI中生成Host值,无需手动填写。

      图10 Headers
    • Body:选择raw格式,使用大括号{}将“"Body参数名":Body参数值”形式的字符串包围在内,如本例中为“{"body":4}”。
      图11 Body

  3. API请求配置完成后,单击“Send”发送请求到服务端,然后查看返回结果。返回"errCode":"DLM.0"即表示API调用成功。如果失败,则请根据报错信息进行修复。

    如调用失败提示“Could not get any response”,可根据提示在Postman设置中关闭“SSL certificate verification”选项或关闭Proxy代理,然后再次尝试运行。

    图12 调用API