除了一个图形界面外,Cordra还提供了三种不同的接口,。
HTTP REST API、数字对象接口协议(DOIP)、标识符/解析协议(IRP)。前两个主要是用来管理服务内数据对象,IRP主要用来管理发布时的标识符合句柄记录。cordra发行了面向Java、JavaScript和TypeScript开发人员的客户端库。

HTTP REST API

Cordra提供了一个用于与数字对象交互的restful风格http协议Api框架。HTTP REST API减少了交互壁垒,用户能够简单通过一个http请求就能操作数字对象,Cordra发行版本身包括客户端,既有Java版本,也有JavaScript/TypeScript版本。Cordra的这套Api支持HTTP/1.1和HTTP/2规范。

主要API:

接口 描述
GET /objects/ 根据id获取对象,对象包括schemas、types、DOs
POST /objects/?type= 创建一个对象,requestBody参数可以参考上一接口的返回
PUT /objects/ 根据id更新一个对象
GET /search 搜索对象,参考search
POST /search 搜索对象,参考search
GET /objects/?query= 搜索对象,参考search
DELETE /objects/ 根据id删除对象
DELETE /objects/?payload= 根据对象id和对象的载荷名称删除其载荷
GET http://hdl.handle.net/ 通过句柄代理使用id访问对象
GET /acls/ 搜索特定对象的acls配置
PUT /acls/ 更新特定对象的acls配置,参考acls
POST /users/this/password 更新当前用户的密码
GET /check-credentials 检查权限信息
POST /call 调用类型方法
GET /listMethods 获取可用方法

更多接口调用可访问HTTP REST API and Examples

Digital Object Interface Protocol (DOIP) Interface

DOIP是一种通信协议,指定客户端如何与DOIP服务管理的数字对象(DOs)交互。这种交互的方法主要是使用与数字对象相关联的标识符,包括那些表示操作、类型和客户端的标识符。
DOIP具有良好的封装,方便了用户直接对DO数字对象进行交互操作。数字对象接口协议 (DOIP) v2 是 DONA 基金会的规范。
DOIPv2Spec_1.pdf

DOIP 接口可以通过设计对象中的配置启用。默认情况下,新的 Cordra 实例将在端口 9000 上有一个 DOIP 侦听器,侦听地址与 HTTP/HTTPS 端口相同。这可以通过编辑设计对象来关闭或更改。


对于每个DOIP,DOIP 服务本身有时是操作的适当目标。默认情况下,DOIP 服务的标识符是使用从 handleMintingConfig(参见句柄集成)配置的前缀和后缀“service”获得的句柄。
ssl访问例子:

  1. 打开连接
  2. openssl s_client -connect localhost:9000
  3. 请求
  4. {
  5. "targetId": "20.500.123/service",
  6. "operationId": "0.DOIP/Op.Hello"
  7. }
  8. #
  9. #
  10. 返回
  11. {
  12. "status":"0.DOIP/Status.1",
  13. "output":{
  14. "id":"20.500.123/service",
  15. "type":"0.TYPE/DOIPService",
  16. "attributes":{
  17. "ipAddress":"127.0.0.1",
  18. "port":9000,
  19. "protocol":"TCP",
  20. "protocolVersion":"2.0",
  21. "publicKey":{
  22. "kty":"RSA",
  23. "n":"m2MIsyH7F7NMA9EABMfPjzbid3MIh9vTP28MKVKFN2waUnPlsb_JM9OfE0cwyRUXuehuNUm7CbaQmOINOFsQhoQBGyj12TnC_Lm__Rgf7Shvl0xKFr83YTa7Zw7HWqOMb_4kY2O7OdV98RIc6oD62cY7j1E_fiudzOnFh5SaXvP3qS3OrNrOA4gODQdplhNikwP5_VwCA45lDnfVBO2Dj62oFl55-BeIc1YQoJ_kkN-8JbNsd3kGKZnq7VDSrGfLAyLLyML9dE7jRK3qxR5Ok_va49KGvQV-krssyacBAIVk1zBUQ8lFnxBcH6g_0Hl_h_zcv-jtfeCCCoZ4sB46Hw==",
  24. "e":"AQAB"
  25. }
  26. }
  27. }
  28. }
  29. #
  30. #

另外还可以通过DOIP API For Http Clients的方式直接通过http请求访问doip对象。访问路径http://baseUri/doip,参数如下:

  • operationId:必需,要执行的操作的标识符
  • targetId:必需,目标对象的标识符
  • clientId:调用方的标识符;这可以隐含在发送的身份验证标头中,在这种情况下,不需要将其作为查询参数包含
  • attributes:通知操作的任意JSON

更多使用访问DOIP

Identifier/Resolution Protocol (IRP) Interface

Cordra提供了一个IRP接口,使客户端能够快速地将数字对象标识符解析为其状态信息。IRP是本地cordra系统和外部交互的接口框架。IRP由RFCs 3650,3651,3652.IRP specification规范演变而来,目前被DONA基金会视为句柄系统的一部分。