Cloud Software Group, Inc. EBX®
ドキュメント > 開発者ガイド > REST データサービス
ナビゲーションモードドキュメント > 開発者ガイド > REST データサービス

はじめに

概要

REST データサービスを使用すると、外部システムは、RESTful ビルトインサービスを使用して TIBCO EBX® リポジトリで管理されているデータと対話できます。

ビルトインサービスのリクエストと応答の構文については、ビルトイン RESTful サービスの章で説明しています。

ビルトイン REST データサービスにより、次のような操作を実行できます。

注意

SOAP と REST の比較を参照してください。

アクティベーションと構成

REST および SOAP データサービスは、ebx-dataservices Web アプリケーションを他の EBX® モジュールと一緒に展開することでアクティブ化されます。詳細については、Java EE 展開を参照してください。

リバースプロキシモードを使用するなど、特定の展開の場合、詳細については、URL コンピューティングを参照してください。

HTTP(S) プロトコルのみがサポートされています。

インタラクション

ボディメディアタイプ

REST ビルトインの入力メッセージと出力メッセージは、排他的に UTF-8 エンコードを使用した JSON 形式である必要があります。ただし、入力メッセージを使用して HTML フォームデータを渡すこともできます。

詳細については、Content-Type を参照してください。

追跡情報

呼び出されるデータサービス操作によっては、セッション追跡情報を指定できる場合があります。

詳細については、Java API の Session.getTrackingInfo を参照してください。

セッションパラメーター

呼び出されるデータサービス操作に応じて、セッション入力パラメーターを指定できます。それらはリクエスト本文で定義されます。

入力パラメーターは、トリガー、アクセスルール、カスタム Web サービスなどのセッションオブジェクトを使用するカスタム Java コンポーネントで使用できます。これらは、データワークフロー操作でも使用できます。

詳細については、Java API の Session.getInputParameterValue を参照してください。

セッションチャネル

セッションチャネルを使用すると、REST ビルトインまたは REST Toolkit サービスを使用するときに、EBX® リポジトリから選択または変更できるものをフィルタリングできます。フィルターは、デフォルトビューを指定することにより、データモデルを通じて可視性が定義されるテーブル、グループ、またはフィールドの構成に基づいています。

これは、クエリパラメーター ebx-channel を介して指定できます。使用可能な値は次のとおりです。

フィルターの動作は、次の組み合わせで記述されます。

データサービスチャネル

XML エレメント

スキーマノードタイプ

ビュー

動作

<hiddenInDataservices>trueフィールドノード

デフォルトの表形式のビュー

コンテンツのために非表示。並べ替え不可

CustomView (表形式または階層形式)

メタ、コンテンツ、フィルター、並べ替えのために非表示

デフォルトのフォームレコード

メタとコンテンツのために非表示

デフォルトのフォームレコードフィールド

見つかりません

ユーザーインターフェイスチャネル

XML エレメント

スキーマノードタイプ

ビュー

動作

<hidden>

true

テーブルノード

ツリービュー

メタとコンテンツのために非表示

デフォルトの表形式のビュー

見つかりません

CustomView (表形式または階層形式)

禁止

デフォルトのフォームレコード

見つかりません

デフォルトのフォームレコードフィールド

カスタムフォームレコード

フィールドノード

デフォルトの表形式のビュー

コンテンツのために非表示。並べ替え不可

デフォルトのフォームレコード

コンテンツのために非表示

デフォルトのフォームレコードフィールド

見つかりません

<hiddenInViews>

true

フィールドノード

CustomView (表形式または階層形式)

メタ、コンテンツ、フィルター、および並べ替えで非表示

カスタムフォームレコード

メタとコンテンツのために非表示

<hiddenInSearch>

true

フィールドノード

デフォルトの表形式のビュー

フィルタリングできません

CustomView (表形式または階層形式)

デフォルトのフォームレコード

デフォルトのフォームレコードフィールド

カスタムフォームレコード

textSearchOnly

デフォルトの表形式のビュー

テキスト検索以外はフィルタリングできません

CustomView (表形式または階層形式)

デフォルトのフォームレコード

デフォルトのフォームレコードフィールド

カスタムフォームレコード

注意

上記のフィールドノードは、テーブルノードの下にのみ配置できます。

プロシージャのコンテキスト

呼び出されるデータサービス操作によっては、デフォルトのプロシージャコンテキスト構成を上書きすることができます。これらはリクエスト本文で定義され、ビルトインの操作内で適用されます。

プロシージャコンテキストは、カスタム REST Toolkit サービスに適用できます。

詳細については、Java APIの ProcedureContext.setCommitThresholdSessionContext.getProcedureUtility、およびProcedureUtility.execute を参照してください。

例外処理

エラーが発生すると、JSON 例外応答が呼び出し元に返されます。ほとんどの場合、例外は REST Toolkit のような JSON 形式を取ります。

以下も参照してください。
{
  "code": 999,                      // JSON Number, HTTP error code or EBX® error code
                                    // in case of HTTP error 422 (optional)
  "errors": [                       // Additional messages to give details (optional).
    {
      "message": "Message 1"        // JSON String
    },
    {
      "message": "Message 2"
    }
  ]
}

複数のレコードの挿入または更新中にエラーが発生した場合、エラーレポートが返されます。

{
  "code": 999,               // JSON Number, HTTP status code
  "errors": [
    {
      "level": "...",        // JSON String, severity level (optional)
      "rowIndex": 999,       // JSON Number, request row index (optional)
      "userCode": "...",     // JSON String, user code (optional)
      "message": "...",      // JSON String, message
      "blocksCommit": "...", // JSON String, Type of blocking constraints (optional)
      "details": "...",      // JSON String, URL (optional)
      "pathInRecord": "...", // JSON String, Path in record (optional)
      "pathInDataset": "..." // JSON String, Path in dataset (optional)
    }
  ]
}

応答には、HTTP ステータスコードとエラーのテーブルが含まれています。各エラーの重大度は、可能な値 (fatalerrorwarninginfo) のいずれかを使用して文字で指定されます)。

HTTP エラー 422 (処理不能エンティティ) は機能エラーに対応します。userCode キーの下にユーザーコードが含まれ、JSON String 型です。

以下も参照してください。

セキュリティ

認証

コンテンツへのアクセスには認証が必須です。いくつかの認証方法が利用可能で、以下で説明されています。説明は優先度順に並べられています (EBX® は最も優先度の高い認証方式を最初に適用します)。

グローバル許可

グローバルアクセス権限は、REST ビルトインサービスと REST OpenAPI サービスに対して個別に定義できます。詳細については、グローバル許可を参照してください。

ルックアップメカニズム

EBX® はいくつかの認証方法を提供するため、条件に基づくルックアップメカニズムが設定され、特定のリクエストにどの方法を適用する必要があるかが分かります。メソッドの適用条件は、認証方式の優先度に従って評価されます。条件が満たされない場合、サーバーは次のメソッドを評価します。次の表に、サポートされている各プロトコルで使用可能な認証方法とその適用条件を示します。それらは、優先度の高いものから低いものの順に並べられます。

操作/プロトコル

認証方法と適用条件

REST / HTTP

トークン

  • HTTP リクエストは、Authorization ヘッダーを保持する必要があります。

  • Authorization ヘッダー値は EBX という単語で始まる必要があります。

  • URL パラメーターに login は指定されていません。

基本

  • HTTP リクエストは、Authorization ヘッダーを保持する必要があります。

  • Authorization ヘッダー値は、Basic という単語で始まる必要があります。

  • URL パラメーターに login は指定されていません。

標準

  • HTTP リクエストは、Authorization ヘッダーを保持できません。

  • loginpassword は URL パラメーターで提供されます。

Rest フォワード

  • HTTP リクエストには、Authorization ヘッダーを含めることはできません。

  • URL パラメーターに login は指定されていません。

特定

  • HTTP リクエストを、以前の認証方法の条件を満たすものにすることはできません。

匿名

  • 以前の認証方法はどれも適用できません。

  • 要求された REST サービスが認証操作を処理します。

同じリクエストに複数の認証方法が存在する場合、EBX® は HTTP コード 401 Unauthorized を返します。

監視

データサービスイベントは、EBX® メイン構成ファイルで宣言されているログカテゴリ ebx.dataServices を介して監視できます。たとえば、ebx.log4j.category.log.dataServices= INFO、ebxFile:dataservices です。

SOAP と REST の比較

操作

SOAP

REST

データ

メタモデルを選択

X

レコードを選択またはカウント (フィルターおよび/またはパブリケーションの表示を使用)

X

X

関連値を持つレコードを選択 (第 1 レベル)

X

レコードを更新または削除 (フィルターおよび/またはビューのパブリケーションを使用)

X

可能な列挙値のセレクター (フィルター付き)

X

作成または複製の準備

X

レコードの挿入、更新、または削除

X

X

履歴レコードを選択またはカウント (フィルターおよび/またはパブリケーションの表示を使用)

X

データセットからノード値を選択

X

X

データセットからノード値を更新

X

データスペースまたはスナップショット間のテーブルまたはデータセットの変更を取得

X

レプリケーションユニットを更新

X

レコードの認証情報を取得

X

サービス契約を生成

WSDL

OpenAPI

ビュー

公開されたテーブルビューを検索

X

データセット

データセット情報を選択

X

ルートまたは子データセットを選択

X

データスペース

データスペースまたはスナップショット情報を選択

X

ルートまたは子のデータスペースを選択、またはスナップショットを選択

X

データスペースを作成、閉じる、マージ

X

X

スナップショットを作成、閉じる

X

X

データスペースまたはスナップショットを検証

X

データセットの検証

X

データスペースのロック、ロック解除

X

X

ワークフロー

ワークフローの開始、再開、または終了

X

管理

デフォルトのディレクトリコンテンツ「ユーザー」、「ロール」... テーブルの管理

X

X

ユーザーインターフェイスを開く、閉じる

X

X

管理データセットを選択、挿入、更新、削除操作

X

システム情報を選択

X

X

ステージング API

X (*)

その他

Java API から Web サービスを開発

X (*)

(*) 詳細については、REST Toolkit を参照してください。

制限事項

日付、時刻、日時の形式

データサービスは、次の日付と時刻の形式のみをサポートします。

形式

xs:date

yyyy-MM-dd

2007-12-31

xs:time

HH:mm:ss または HH:mm:ss.SSS

11:55:00

xs:dateTime

yyyy-MM-ddTHH:mm:ss または yyyy-MM-ddTHH:mm:ss.SSS

2007-12-31T11:55:00

JMS

ドキュメント > 開発者ガイド > REST データサービス