本节深入探讨了驱动 @blocklet/did-space-js SDK 的基本原则和架构模式。理解这些概念将帮助您更有效地使用该库,并更有信心地解决问题。该 SDK 构建在三大支柱之上:强大的命令模式、灵活的身份验证方法和安全的请求签名机制。
命令模式
SDK 并未在主 SpaceClient 对象上设置数十个方法,而是采用了命令模式。这一设计选择提供了一个清晰且可扩展的架构。
工作原理:
封装
每个独立的操作(如上传文件或列出目录)都被封装到其自己的
Command类中。例如,要上传文件,您需要使用PutObjectCommand。标准化
每个命令都有一个标准化的结构,接受一个
input对象作为其参数,并返回一个结构化的output对象。执行
SpaceClient充当通用执行器。您创建一个命令实例,然后将其传递给client.send()方法,该方法会处理身份验证、请求签名和 HTTP 通信的底层逻辑。
这种关注点分离——命令定义做什么,客户端处理如何做——使得 SDK 变得可预测且易于扩展。

客户端初始化与身份验证
在发送任何命令之前,您必须使用正确的配置和身份验证凭据来初始化一个 SpaceClient 实例。SDK 的设计非常灵活,支持多种身份验证策略以适应不同的用例,从服务器端应用程序到客户端组件。
配置客户端的主要方式是通过传递给其构造函数的 SpaceClientOptions 对象。该对象指定了目标 DID Space 以及访问它所需的凭据。
客户端初始化与身份验证
了解初始化 SpaceClient 的不同方法,包括使用钱包、密钥或授权令牌。
设计安全:请求签名
安全性是 DID Spaces 的基石。SDK 发送的每个 API 请求都经过加密签名,以确保其真实性和完整性。这可以防止未经授权的访问和传输中数据的篡改。
以下是该过程的简要概述:
- 当您调用
client.send(command)时,SDK 会构建完整的 HTTP 请求。 - 然后,它通过哈希请求内容(URL、方法、正文)并使用您钱包中的私钥对哈希进行签名,为该特定请求创建一个唯一的数字签名。
- 此签名连同您的公钥一起作为请求头的一部分发送。
- DID Space 服务器接收到请求后,会在其端重新计算签名,并使用您的公钥与您发送的签名进行验证。
如果签名匹配,服务器就知道该请求是真实的并且来自您。如果不匹配,它将拒绝该请求。
请求签名
深入了解安全模型,探索请求如何通过加密签名和验证来保证数据的完整性。
后续步骤
现在您对核心概念有了宏观的了解,可以更详细地探索它们,或者继续阅读实践指南。