使用文档
通用字典表
以下是接口中全局统一使用的字典表。
证件类型(cert_type)
KEYCODE | 值 |
---|---|
111 | 身份证 |
414 | 普通护照 |
513 | 往来港澳通行证 |
990 | 其它 |
性别(gender或sex)
KEYCODE | 值 | 值Code |
---|---|---|
male | 男 | 1 |
990 | 其它 | 0 |
接口鉴权说明
本文档介绍如何通过AK+SK方式对接口请求进行签名和鉴权。
签名方式
在请求接口时,通过X-Idmesh-Signature
发送签名字符串进行鉴权。以下是签名方式的详细说明和示例代码。
签名字符串格式:
<nonce>$<timestamp>$v2$<ak>$<hashMethod>$<signStr>
其中
<nonce>
:随机字符串<timestamp>
:毫秒时间戳v2
:指签名版本,和接口版本无关<ak>
:用户的AK<hashMethod>
:签名方法,目前支持sm3
<signStr>
:签名结果,采用hex编码
签名步骤:
设置请求参数:
let param = { nonce: "pxozuipoasdfiop", timestamp: Date.now(), object_code: "867656852038131" }
选择签名字段:
签名字段目前只包含timestamp
和nonce
,并按字典序排序:let specKeys = ["timestamp", "nonce"].sort();
构建待签字符串:
将路径和待签参数按顺序拼接,并在最后添加用户的SK
:let str = "/v1/tree-nodes"; for (let i = 0; i < specKeys.length; i++) { str += `${specKeys[i]}=${param[specKeys[i]]}`; if (i < specKeys.length - 1) { str += '&'; } } str += `${sk}`;
计算签名:
使用sm3
算法对待签字符串进行摘要计算,并生成签名字符串:const sign = `${param.nonce}$${param.timestamp}$v2$${ak}$sm3$${sm3(str)}`;
设置请求头:
将签名字符串放入请求头的X-Idmesh-Signature
字段中:const headers = { 'X-Request-Id': timestamp, // 请求ID,如果需要的话 'X-Idmesh-Signature': sign, // 鉴权签名 }
发起请求:
axios.get('http://service-gate.api.dev.idmesh.site/v1/tree-nodes', { params: param, headers: headers, }).then(response => { // 请求成功处理 console.log('响应数据:', response.data); }).catch(error => { // 请求失败处理 console.error('请求失败:', error); });
调用示例
以查询组织的节点列表为例
GET /v1/tree-nodes
接口示例
名称 | 类型 | 是否必须 | 描述 | 备注 |
---|---|---|---|---|
object_code | String | true | 组织编码 | |
name | String | false | 组织名称 | |
code | String | false | 组织编号 | |
tag | String | false | 标签 | |
time_modified_from | String | false | 更新时间起点 | |
time_modified_to | String | false | 更新时间终点,默认至今 |
const axios = require('axios');
const sm3 = require('sm3');
let ak = "GWbRVqtnNY5KBlHuPzNMpPht";
let sk = "8nBudksGstwwbOadc1XnarfblwsPWnH2";
let timestamp = Date.now();
// 设置请求参数
let param = {
nonce: "pxozuipoasdfiop",
timestamp: timestamp,
object_code: "867656852038131"
}
// 签名
let specKeys = ["timestamp","nonce"].sort(); // 签名字段目前只包含timestamp和nonce
// 待签字符串
let str = "/v1/tree-nodes";
for (let i = 0; i < specKeys.length; i++) {
str += `${specKeys[i]}=${param[specKeys[i]]}`;
if (i < specKeys.length - 1) {
str += '&';
}
}
str += `${sk}`;
// <用户AK>$SM3$<SM3摘要值>
const sign = `${param.nonce}$${param.timestamp}$v2$${ak}$sm3$${sm3(str)}`;
console.log("trace_id:",timestamp)
// 设置请求的headers
const headers = {
'X-Request-Id':timestamp, // 请求ID,如果需要的话
'X-Idmesh-Signature': sign, // 你的授权令牌,如果需要的话
}
// 发起GET请求
axios.get('http://service-gate.api.dev.idmesh.site/v1/tree-nodes', {
params: param,
headers: headers,
}).then(response => {
// 请求成功处理
console.log('响应数据:', response.data);
}).catch(error => {
// 请求失败处理
console.error('请求失败:', error);
});
最后修改时间: 2 个月前
通用字典表
证件类型(cert_type)
性别(gender或sex)
接口鉴权说明
签名方式
调用示例
GET /v1/tree-nodes