DEMO-OpenAPI使用

适用模块

OpenAPI

具体说明

调用接口时的通用规范,对所有OpenAPI都适用,OpenAPI列表与详情请查看各个子产品的OpenAPI文档说明:  https://study.sf.163.com/documents/read/easyopenapi/openapi_list.md

使用示例

1、获取OpenAPI统一入口域名

Demo-新版OpenAPI使用 - 图1

打开获得http://bigdata-demo3.jdlt.163.org:10098/api/system/check
OpenAPI统一入口域名即为http://bigdata-demo3.jdlt.163.org:10098
2、请求地址拼接

请求地址由三个部分组成,分别是openapi统一入口域名、子产品调用前缀、子产品功能URI。例如:
http://IP:port/openapi/easydataservice/v1/app/get
其中http://IP:port为统一入口域名,/openapi/easydataservice为子产品调用前缀,/v1/app/get为子产品功能URI

Demo-新版OpenAPI使用 - 图2

3、鉴权信息
系统为调用者分别应用身份,每个应用都有唯一的accessKeysecretKey。在使用aksk鉴权方式时,需要在入参中携带authType(值为AKSK)、timestamp(5分钟内的毫秒时间戳)、accessKeysig(由secretKey计算出)。

3.1、生成鉴权信息
curl-X POST  "http://easyopenapi域名/api/opt/app/insert?xxx"
注:easyopenapi1.0.2.4版本新增owner参数=用个人账号或者项目账号,appName=可以任意最好是调动的业务项目英文名称,如BI系统就用bi_test。参考案例如下
curl -X POST  "http://easyopenapi域名/api/opt/app/insert?owner=admin.mammut@163.com&appName=bi_test"

请求示例:
curl -X POST "http://bigdata-demo3.jdlt.163.org:10098/api/opt/app/insert?owner=admin.mammut@163.com&appName=bi_test"    
{
    "code": 0,
    "msg": "success",
    "result": {
        "id": 2,
        "appName": "xxx",这个appName,一般使用调用方系统的英文名称
        "accessKey": "fcb2e0b391c0498ba2fadc85c1018f7b",
        "secretKey": "3e6e5a17cd3d4cb389a488c54ee4706d",
        "createTime": null,
        "updateTime": null
    },
    "reqId": "8821f5c6d9ec4fe1aea778f4bc18d092",
    "cost": 1364
}

注意:
1.如果忘记key的话,第二次调用将不会返回相关key,需要从数据库easyopenapi.openapi_app获取。
2.一般调用申请接口的key都是项目管理员来统一分配key,便于权限集中管理和安全。

Demo-新版OpenAPI使用 - 图3

数据库获取信息

Demo-新版OpenAPI使用 - 图4

3.2GET方法时,以上参数放在uri中,例如:
&authType=AKSK&timestamp=1646813499000&accessKey=
fcb2e0b391c0498ba2fadc85c1018f7b&sig=818dc0bb904cc75fa935cb96e0fc9473

3.3POST方法时,以上参数放在request body里,例如:
{
    "authType":"AKSK",
    "timestamp":1646813499000,
    "accessKey":"fcb2e0b391c0498ba2fadc85c1018f7b",
    "sig":"818dc0bb904cc75fa935cb96e0fc9473"
}

其中sig的计算方法为:
sig = md5(secretKey+timestamp) 其中+号表示拼接操作,sig为小32

Demo-新版OpenAPI使用 - 图5

4、接口请求

- GET请求:
当调用的接口为GET方法时,请求参数只能放置在调用地址的URL
 curl -X GET 'http://easydemo-prod-openapi.163yun.com/openapi/easymetahub/lineage/v1/table/get?datasourceId=1&product=poc&user=admin.mammut@163.com&db=poc&table=xxx&direction=up&authType=AKSK&timestamp=1689770024232&accessKey=xxx&sig=xxx'

- POST请求:
当调用的接口为POST方法时,请求参数只能以json格式(请求头中需要指定Content-Type: application/json)放置在Request Body
curl -X POST -H 'Content-Type: application/json' http://easy-openapi.bdms.service.163.org/openapi/easydataservice/api/v1/app/add -d '{"user": "user@163.com", "product": "product1", "appName": "app1", "appDesc":"xxxxxxxxxxxx", "authType":"AKSK", "timestamp":1232423123, "accessKey":"yyyyy", "sig":"zzzzzz"}'

作者:林帅