第十章 REST 客户端方法
数据平台 DocDB REST 客户端 API 提供了使能够通过 REST 使用 DocDB 的方法。 REST API 与其他 DocDB API 不同,因为 REST 作用于资源,而其他 API 作用于对象。这种资源导向是 REST 本质的基础。
本章中的curl 示例指定端口号57774。这只是一个示例。应该使用适合 IRIS 实例的端口号。
在curl中,GET命令是默认的;因此,省略 -X GET 的curl 命令默认为-X GET。
对于 DocDB,唯一有效的 Content-Type 是 application/json。如果请求意外的 Content-Type,则会发出 HTTP 响应代码 = 406。
要使用 REST API,必须启用 %Service_DocDB 服务。为此,请导航至系统管理 > 安全 > 服务,选择 %Service_DocDB,然后选中 %Service_DocDB 复选框。
管理数据库
GetAllDatabases:返回一个JSON数组,其中包含命名空间中所有数据库的名称。
curl -i -X GET -H "Content-Type: application/json" http://localhost:57774/api/docdb/v1/namespaceName
DropAllDatabases:删除命名空间中当前用户具有写入权限的所有数据库。
curl -i -X DELETE -H "Content-Type: application/json" http://localhost:57774/api/docdb/v1/namespaceName
CreateDatabase:在命名空间中创建数据库。
curl -i -X POST -H "Content-Type: application/json"
http://localhost:57774/api/docdb/v1/namespaceName/db/databaseName ?type= documentType& resource= databaseResource
GetDatabase:返回命名空间中数据库的数据库定义。
curl -i -X GET -H "Content-Type: application/json"
http://localhost:57774/api/docdb/v1/namespaceName/db/databaseName
DropDatabase:从命名空间中删除数据库。
curl -i -X DELETE -H "Content-Type: application/json"
http://localhost:57774/api/docdb/v1/namespaceName/db/databaseName
管理属性
CreateProperty:创建新属性或替换指定数据库中的现有属性。该属性由URL参数而不是内容定义。所有参数都是可选的。
curl -i -X POST -H "Content-Type: application/json"
http://localhost:57774/api/docdb/v1/namespaceName/prop/databaseName/
propertyName?type= propertyType& path= propertyPath& unique=propertyUnique
以下示例在 Wx 数据库中创建 City 属性:
http://localhost:57774/api/docdb/v1/mysamples/prop/wx/city?type=%String&path=query.results.channel.location.city&0
GetProperty:从指定数据库返回属性定义。
curl -i -X GET -H "Content-Type: application/json"
http://localhost:57774/api/docdb/v1/namespaceName/prop/databaseName/propertyName
返回的属性定义是一个 JSON 结构,如下所示:
{"content":{"Name":"city","Type":"%Library.String"}}
DropProperty:从指定数据库中删除属性定义。
curl -i -X DELETE -H "Content-Type: application/json"
http://localhost:57774/api/docdb/v1/namespaceName/prop/databaseName/propertyName
以下是 JSON 属性定义:
{"content":{"Name":"mydocdb","Class":"DB.MyDocDb","properties":[Array[5]
0: {"Name":%%OTD,"Type":"%RawString"},
1: {"Name":%Concurrency,"Type":"%RawString"},
2: {"Name":%Doc,"Type":"%Library.DynamicAbstractObject"},
3: {"Name":%DocumentId,"Type":"%Library.Integer"},
4: {"Name":%LastModified,"Type":"%Library.UTC"}
]}}