第十章 REST 客户端方法

68 阅读2分钟

第十章 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"}
   ]}}