13.3. Thorntail のリレーショナルデータベースバックエンドの例
以下の例は、実稼働環境での実行を目的としていません。
制限: このサンプルアプリケーションを Minishift または CDK で実行します。手動ワークフローを使用して、このサンプルを OpenShift Online Pro および OpenShift Container Platform にデプロイすることもできます。この例は、現在 OpenShift Online Starter では使用できません。
リレーショナルデータベースバックエンドのサンプル
Relational Database Backend のサンプルは、REST API Level 0 アプリケーションを拡張し、単純な HTTP API を使用して PostgreSQL データベースで 作成、読み取り、更新、および 削除 (CRUD) 操作を実行する基本的な例を提供します。CRUD 操作は永続ストレージの 4 つの基本的な機能であり、データベースを処理する HTTP API の開発時に広く使用されます。
また、この例では、HTTP アプリケーションが OpenShift のデータベースを見つけ、接続する機能も示しています。各ランタイムは、指定したケースで最も適した接続ソリューションを実装する方法を示しています。ランタイムは、JDBC、JPAの使用、または ORM API に直接アクセスするなどのオプションを選択できます。
サンプルアプリケーションは HTTP API を公開し、HTTP で CRUD 操作を実行してデータを操作できるようにするエンドポイントを提供します。CRUD 操作は HTTP Verbs
にマップされます。API は JSON フォーマットを使用して要求を受け取り、ユーザーに応答を返します。また、ユーザーは、サンプルが提供するユーザーインターフェースを使用して、アプリケーションを使用することもできます。具体的には、この例では以下を可能にするアプリケーションを提供します。
-
ブラウザーでアプリケーション Web インターフェースに移動します。これにより、
my_data
データベースのデータで CRUD 操作を実行する簡単な Web サイトが公開されます。 -
api/fruits
エンドポイントで HTTPGET
要求を実行します。 - データベース内のすべての fruits の一覧が含まれる JSON 配列としてフォーマットされたレスポンスを受け取ります。
-
有効なアイテム ID を引数として渡しながら、
api/fruits/*
エンドポイントで HTTPGET
要求を実行します。 - 指定の ID を持つ fruit の名前が含まれる JSON 形式で応答を受け取ります。指定された ID に項目がない場合は、呼び出しにより HTTP エラー 404 が発生します。
-
api/fruits
エンドポイントで HTTPPOST
要求を実行し、有効なname
値を渡してデータベースの新規エントリーを作成します。 -
有効な ID および名前を引数として渡す
api/fruits/*
エンドポイントで HTTPPUT
要求を実行します。これにより、要求に指定された名前に一致するように、指定の ID を持つ項目の名前が更新されます。 -
api/fruits/*
エンドポイントで HTTPDELETE
要求を実行し、有効な ID を引数として渡します。これにより、指定された ID の項目がデータベースから削除され、応答として HTTP コード204
(コンテンツなし) を返します。無効な ID を渡すと、呼び出しにより HTTP エラー404
が発生します。
この例には、アプリケーションがデータベースと完全に統合されていることを検証するために使用できる自動化された 統合テスト のセットも含まれています。
この例では、完全に成熟した RESTful モデル (レベル 3) を示していますが、推奨される HTTP API プラクティスに従って、互換性のある HTTP 動詞およびステータスを使用しています。
13.3.1. Relational Database Backend の設計トレードオフ
表13.3 設計のトレードオフ
利点 | 不利な点 |
---|---|
|
|