除了一个图形界面外,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/ |
根据对象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访问例子:
打开连接
openssl s_client -connect localhost:9000
请求
{
"targetId": "20.500.123/service",
"operationId": "0.DOIP/Op.Hello"
}
#
#
返回
{
"status":"0.DOIP/Status.1",
"output":{
"id":"20.500.123/service",
"type":"0.TYPE/DOIPService",
"attributes":{
"ipAddress":"127.0.0.1",
"port":9000,
"protocol":"TCP",
"protocolVersion":"2.0",
"publicKey":{
"kty":"RSA",
"n":"m2MIsyH7F7NMA9EABMfPjzbid3MIh9vTP28MKVKFN2waUnPlsb_JM9OfE0cwyRUXuehuNUm7CbaQmOINOFsQhoQBGyj12TnC_Lm__Rgf7Shvl0xKFr83YTa7Zw7HWqOMb_4kY2O7OdV98RIc6oD62cY7j1E_fiudzOnFh5SaXvP3qS3OrNrOA4gODQdplhNikwP5_VwCA45lDnfVBO2Dj62oFl55-BeIc1YQoJ_kkN-8JbNsd3kGKZnq7VDSrGfLAyLLyML9dE7jRK3qxR5Ok_va49KGvQV-krssyacBAIVk1zBUQ8lFnxBcH6g_0Hl_h_zcv-jtfeCCCoZ4sB46Hw==",
"e":"AQAB"
}
}
}
}
#
#
另外还可以通过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基金会视为句柄系统的一部分。