第十章 REST 客户端方法

数据平台 DocDB REST 客户端 API 提供了使能够通过 REST 使用 DocDB 的方法。 REST API 与其他 DocDB API 不同,因为 REST 作用于资源,而其他 API 作用于对象。这种资源导向是 REST 本质的基础。

本章中的curl 示例指定端口号57774。这只是一个示例。应该使用适合 IRIS 实例的端口号。

curl中,GET命令是默认的;因此,省略 -X GETcurl 命令默认为-X GET。

对于 DocDB,唯一有效的 Content-Typeapplication/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"}
   ]}}

02-25 16:05