curl
操作场景
使用curl命令调用APP认证的API时,您需要先下载JavaScript SDK生成curl命令,然后将curl命令复制到命令行调用API。
前提条件
已获取API的域名、请求url、请求方法、AppKey和AppSecret等信息,具体参见认证前准备。
获取SDK
- 登录DataArts Studio控制台。
- 单击“数据服务”模块。
- 单击左侧菜单“共享版> SDK”或“专享版 > SDK”。
- 单击SDK使用引导区域里对应语言的SDK,下载SDK包到本地。
- 进行SDK包完整性校验。Windows操作系统下,打开本地命令提示符框,输入如下命令,在本地生成已下载SDK包的SHA256值,其中,“D:\java-sdk.zip”为SDK包的本地存放路径和SDK包名,请根据实际情况修改。
certutil -hashfile D:\java-sdk.zip SHA256
命令执行结果示例,如下所示:
SHA256 的 D:\java-sdk.zip 哈希: becff4310645f3734344897ffdcabb1853d4b7d93b59a6ea187c5ae40543b36b CertUtil: -hashfile 命令成功完成。 becff4310645f3734344897ffdcabb1853d4b7d93b59a6ea187c5ae40543b36b
对比所下载SDK包的SHA256值和下表中对应语言SDK包的SHA256值。如果一致,则表示下载过程不存在篡改和丢包。
不同语言SDK包
SHA256值
Java
becff4310645f3734344897ffdcabb1853d4b7d93b59a6ea187c5ae40543b36b
Go
bcf8cf19a21226e247195f2e584c8414da39b8d05840fb02948e1375d9bbb7e6
Python
c3da3b5814f828d6217963e856563d558d938b3da28993a8a13c8a7ebff5b95d
C#
a880b47e63ab35bfe216592e340a8135b866aef8f756ef7738fff3287885f33a
JavaScript
53261387f5fcf46e61d0bef5e890bea97952717f327c356412c3128389e848d6
PHP
29bf711144e77a4adaea1257cd6dedd2220e57b729a8fd000c51e68ccb42ad4b
C++
f604c6386c62cccb7c358007778037d5b15480987dc2860eef1b7bad37cb21d7
C
7086012c2d0569d5938830926b19fbea0d46682a983e04e52924978e8720c2f8
Android
89962b186707828b06b0c9f50c010b2f4cefd6a8e7ca9bdefb616bbbf6e739c8
获取“ApiGateway-javascript-sdk.zip”压缩包,解压后目录结构如下:
名称 |
说明 |
---|---|
signer.js |
SDK代码 |
node_demo.js |
Nodejs示例代码 |
demo.html |
浏览器示例代码 |
demo_require.html |
浏览器示例代码(使用require加载) |
test.js |
测试用例 |
js\hmac-sha256.js |
依赖库 |
js\moment.min.js |
|
js\moment-timezone-with-data.min.js |
|
licenses\license-crypto-js |
第三方库license文件 |
licenses\license-moment |
|
licenses\license-moment-timezone |
|
licenses\license-node |
调用API示例
- 使用JavaScript SDK生成curl命令。
获取“ApiGateway-javascript-sdk.zip”压缩包并解压。在浏览器中打开demo.html,页面如下图所示。
- 填入Key、Secret、方法名、请求协议、域名和url(认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全)。本示例从前端输入,仅用于演示,例如:
1 2 3 4
Key=4f5f626b-073f-402f-a1e0-e52171c6100c Secret=****** Method=POST Url=https://{apig-endpoint}
- 填入json格式的Query和Headers,填入Body。其中所访问API的ID为必填项,需要填入具体的ID信息,以参数"x-api-id"填入Headers中。
- 单击“Send request”,生成curl命令。
$ curl -X POST "https://{apig-endpoint}/" -H "X-Sdk-Date: 20180530T115847Z" -H "Authorization: SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=9e5314bd156d517******dd3e5765fdde4" -d ""
- 为命令添加x-Authorization头,值与Authorization头相同。将curl命令复制到命令行,访问API。
$ curl -X POST "https://{apig-endpoint}/" -H "X-Sdk-Date: 20180530T115847Z" -H "Authorization: SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=9e5314bd156d517******dd3e5765fdde4" -H "X-Authorization: SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=9e5314bd156d517******dd3e5765fdde4" -d "" Congratulations, sdk demo is running