Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

REST クライアント・メソッド

InterSystems IRIS® Data Platform の DocDB REST クライアント API は、REST からの DocDB の操作を可能にするメソッドを提供します。REST API は他の DocDB API とは異なります。他の API はオブジェクトに作用しますが、REST はリソースに作用するためです。このリソース指向は、REST の特性の基本となります。

この章の curl の例では、ポート番号 57774 を指定しています。これは、一例に過ぎません。実際は、ご使用の InterSystems IRIS インスタンスに適したポート番号を使用する必要があります。

curl では GET コマンドが既定なので、-X GET を省略した curl コマンドは、既定で -X GET になります。

DocDB の場合、唯一有効な Content-Type は application/json です。予期しない Content-Type が要求された場合、HTTP 応答コード = 406 が発行されます。

REST API の詳細は、"インターシステムズ・クラス・リファレンス" の %Api.DocDB.v1Opens in a new tab を参照してください。REST の詳細は、"REST サービスの作成" を参照してください。

データベースの管理

  • 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: ネームスペースからデータベースを 1 つ削除します。

    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"}
   ]}}

ドキュメントの挿入および更新

  • SaveDocument: 指定されたデータベースに新規ドキュメントを挿入します。

    curl -i -X POST -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/doc/databaseName/
    

    この URL の最後にスラッシュがある点に注意してください。

    1 つ以上のドキュメントを挿入するには、POST を実行します。要求の本文は、JSON ドキュメント・オブジェクトまたはドキュメント・オブジェクトの JSON 配列のいずれかになります。ドキュメント・オブジェクトは、コンテンツのみのラップされていない形式にすることができる点に注意してください。このラップされていない形式では、必ず新しい %DocumentId で挿入されます。 データベース内で %DocumentId が存在しないラップされたドキュメント・オブジェクトを指定した場合、その %DocumentId で挿入されます。それ以外の場合、%DocumentId プロパティは無視され、新しい %DocumentId で挿入されます。要求が成功した場合、1 つの JSON ドキュメント・ヘッダ・オブジェクトまたは JSON ドキュメント・ヘッダ・オブジェクトの配列が返されます。要求が失敗した場合、JSON ヘッダ・オブジェクトがエラー・オブジェクトに置換されます。

  • SaveDocument: 指定されたデータベース内の既存ドキュメントを置換します。

    curl -i -X PUT -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/doc/databaseName/id
    

    特定の ID 位置で JSON ドキュメント・オブジェクトを 1 つ挿入します。指定された %DocumentId が既に存在する場合、既存ドキュメントが新規ドキュメントに置換されます。

  • SaveDocumentByKey: 指定されたデータベース内の既存ドキュメントを置換します。

    curl -i -X PUT -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/doc/databaseName/keyPropertyName/keyValue
    

ドキュメントの削除

  • DeleteDocument: 指定されたデータベースからドキュメントを削除します。

    curl -i -X DELETE -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/doc/databaseName/id
    

    %DocumentId で指定されたドキュメントを削除します。要求が成功した場合、指定されたドキュメントが削除され、ドキュメント・ラッパー・メタデータ {"%DocumentId":<IDnum>,"%LastModified":<timestamp>} が返されて、ステータス 200 (OK) になります。

  • DeleteDocumentByKey: 指定されたデータベースからドキュメントを削除します。

    curl -i -X DELETE -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/doc/databaseName/keyPropertyName/keyValue
    

ドキュメントの取得

  • GetDocument: データベースから指定ドキュメントを返します。

    curl -i -X GET -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/doc/databaseName/id? wrapped=true|false
    
  • GetDocumentByKey: データベースから一意のキーとして定義されたプロパティでドキュメントを返します。

    curl -i -X POST -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/doc/databaseName/keyPropertyName/keyValue
    

    FindDocuments: データベースからクエリ仕様と一致するすべてのドキュメントを返します。

    curl -i -X POST -H "Content-Type: application/json" 
    http://localhost:57774/api/docdb/v1/namespaceName/find/databaseName? wrapped=true|false
    

以下の curl スクリプトの例では、完全なユーザの資格情報およびヘッダ情報を指定しています。MySamples ネームスペースにある Continents ドキュメント・データベースのすべてのドキュメントが返されます。

curl --user _SYSTEM:SYS -w "\n\n%{http_code}\n" -X POST 
-H "Accept: application/json" -H "Content-Type: application/json" 
http://localhost:57774/api/docdb/v1/mysamples/find/continents

ドキュメント・データベースから以下のような JSON データが返されます。

{"content":{"sqlcode":100,"message":null,"content":[
  {"%Doc":"{\"code\":\"NA\",\"name\":\"North America\"}","%DocumentId":"1","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"SA\",\"name\":\"South America\"}","%DocumentId":"2","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"AF\",\"name\":\"Africa\"}","%DocumentId":"3","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"AS\",\"name\":\"Asia\"}","%DocumentId":"4","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"EU\",\"name\":\"Europe\"}","%DocumentId":"5","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"OC\",\"name\":\"Oceana\"}","%DocumentId":"6","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"AN\",\"name\":\"Antarctica\"}","%DocumentId":"7","%LastModified":"2018-02-15 21:33:03.64"}]}}

制限 : 以下の curl スクリプトの例では、制限オブジェクトを指定して、Continents ドキュメント・データベースから返されるドキュメントを制限しています。この制限例では、返されるドキュメントの名前が A の文字から始まるドキュメントに制限されます。

curl --user _SYSTEM:SYS -w "\n\n%{http_code}\n" -X POST 
-H "Accept: application/json" -H "Content-Type: application/json" 
http://localhost:57774/api/docdb/v1/mysamples/find/continents -d
'{"restriction":["Name","A","%STARTSWITH"]}'

ドキュメント・データベースから以下の JSON ドキュメントが返されます。

{"content":{"sqlcode":100,"message":null,"content":[
  {"%Doc":"{\"code\":\"AF\",\"name\":\"Africa\"}","%DocumentId":"3","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"AS\",\"name\":\"Asia\"}","%DocumentId":"4","%LastModified":"2018-02-15 21:33:03.64"},
  {"%Doc":"{\"code\":\"AN\",\"name\":\"Antarctica\"}","%DocumentId":"7","%LastModified":"2018-02-15 21:33:03.64"}]}}

プロジェクション : 以下の curl スクリプトの例では、Continents ドキュメント・データベースの各ドキュメントから返す JSON プロパティを投影しています。この例では、前の例と同じ制限が使用されています。

curl --user _SYSTEM:SYS -w "\n\n%{http_code}\n" -X POST 
-H "Accept: application/json" -H "Content-Type: application/json" 
http://localhost:57774/api/docdb/v1/mysamples/find/continents -d
'{"restriction":["Name","A","%STARTSWITH"],"projection":["%DocumentId","name"]}'

ドキュメント・データベースから以下のような JSON データが返されます。

{"content":{"sqlcode":100,"message":null,"content":[
  {"%Doc":"{"%DocumentId":"3","name":"Africa"}},
  {"%Doc":"{"%DocumentId":"4","name":"Asia"}},
  {"%Doc":"{"%DocumentId":"7","name":"Antarctica"}}]}}
FeedbackOpens in a new tab