XDI全称为XRI Data Interchange,是一套面向分布式环境的数据交换协议。它最早由OASIS标准组织推动,目标是解决不同系统之间数据难以互通的问题。XDI把数据表达成带语义的图,并通过全局唯一的标识符来定位数据与主体,使数据可以在多个信任域之间流动而不丢失含义。

为什么需要XDI
在传统的接口集成中,我们常使用REST或SOAP,但这些方式往往把数据结构和业务耦合在一起。当参与方变多,字段含义、权限控制就会变得混乱。XDI试图用一套中立的语义模型来解决以下痛点:
- 跨组织身份与数据归属不清晰
- 接口变更导致下游系统瘫痪
- 缺乏细粒度的数据授权机制
XDI的核心概念
1. 全局标识符
XDI使用XRI或类似URI的写法来标记每一个数据节点,例如=(alice)表示用户Alice,而=(alice)/age表示她的年龄属性。这样无论数据存在哪台服务器,引用方式都一致。
2. 语义图模型
数据不是扁平的表,而是节点与关系组成的图。一个XDI图可以用JSON或XML序列化,下面是一段简化的XDI JSON示例:
{
"=<alice>": {
"<age>": 30,
"<email>": "alice@ipipp.com",
"<friend>": "=<bob>"
}
}
3. 链接契约
XDI引入链接契约(Link Contract)来描述谁能访问什么数据。它相当于在数据层直接写的权限策略,而不是靠外部网关控制。
一个最小XDI操作示例
下面用伪代码展示如何向XDI端点请求用户资料。注意这里只是说明逻辑,真实实现需依赖XDI客户端库。
# 连接XDI服务端
client = XDIClient("https://xdi.ipipp.com")
# 构造查询语句,获取Alice的年龄
query = "=<alice>/<age>"
# 发送请求并解析
result = client.get(query)
print(result.value) # 输出 30
XDI适合哪些场景
| 场景 | 说明 |
|---|---|
| 去中心化身份 | 用户自己掌管数据,授权第三方读取 |
| 物联网设备互通 | 不同厂商设备用统一语义交换状态 |
| 跨企业数据协作 | 在契约约束下共享客户或供应链数据 |
小结
理解什么是XDI,关键就在于把它看作“带权限语义的分布式数据图协议”。它不追求替代现有API,而是为需要强标识、强主权控制的交换提供基础层。若你的系统面临多主体数据归属难题,XDI值得进一步研究。