Collection
3. HTTP REST API の活性化 [ オプション ] 4. テスト
{
"fields" : {
"first_name": {"type":"string"},
"last_name": {"type":"string"},
"location": {"type":"string"}
} } {
"fields" : {
"first_name": {"type":"string"},
"last_name": {"type":"string"},
"location": {"type":"string"}
} }
{
"type": "employee",
"fields": {
"first_name" : "Alice",
"last_name“ : "Rogers",
"location" : "Seattle"
} }, {
"type": "employee",
"fields": {
"first_name" : "Bill",
"last_name" : "Stevens",
"location" : "Seattle"
} }, {
"type": “employee",
"fields": {
"first_name" : "Cathy",
"last_name" : "Tomlin",
"location" : "Boston"
{
"type": "employee",
"fields": {
"first_name" : "Alice",
"last_name“ : "Rogers",
"location" : "Seattle"
} }, {
"type": "employee",
"fields": {
"first_name" : "Bill",
"last_name" : "Stevens",
"location" : "Seattle"
} }, {
"type": “employee",
"fields": {
"first_name" : "Cathy",
"last_name" : "Tomlin",
"location" : "Boston"
}
ZRM.delegate();
ZRM.delegate();
app/resources/employee.groovy
データベース接続構成
拡張モジュール (zero.resource) の依存性解決
– CLI での構成手順:
• <appRoot>/config/ivy.xml を開く
• 下記ステートメントを dependencies 要素の子要素として記述 – <dependency org="zero" name="zero.resource" rev="[1.0.0.0,
2.0.0.0["/>
• <appRoot>/config/ivy.xml を保存
• コマンド・ラインから zero resolve コマンドを実行
DB アクセス仕様の構成定義
– Embedded版Derbyを使用する場合、構成不要
– DBにアクセスするために必要な情報を,
<appRoot>/config/zero.configに定義する
• ドライバー・クラス名,アドレス , DB 名,ユーザー ID ,パスワード,他
• /config/db/zero-resource
• 構成例
– IBM DB2
/config/db/zero-resource = {
"class" : "com.ibm.db2.jcc.DB2SimpleDataSource",
"driverType" : 4,
"serverName" : "myserver",
"portNumber" : 50000,
"databaseName" : "MYDB",
"user" : "db2inst1",
"password" : "mypassword"
}
データベース接続構成 ( 続き )
DB アクセス仕様の構成定義 ( 続き )
– 既に構成済みのDBをZRMで使用したい場合
• <appRoot>/config/zero.config 内で, ZRM で使いたい DB の DB キーを /config/resource/dbKey に代入する
• 構成例
– 定義済み MySQL の myserver 上の MY1STDB を ZRM で使う場合:
/config/db/my-database = {
"class" : "com.mysql.jdbc.jdbc2.optional.MysqlDataSource",
"serverName" : "myserver",
"portNumber" : 3306,
"databaseName" : "MY1STDB",
"user" : "root",
"password" : "mypassword"
}
/config/resource/dbKey = "my-database"
リソース・モデルの定義
– JSON 形式で DB テーブル・スキーマを定義する
• キー”fields”の値として、Map形式で定義
• 暗黙的に次の2つのカラムが生成,使用される
– INTEGER 型のカラム ”id”
> プライマリー・キー
– TIMESTAMP 型のカラム ”updated”
– 詳細は次のリンクを参照
> http://www.projectzero.org/sMash/1.0.x/docs/zero.devguide.do c/zero.resource/declaration.html
– <appRoot>/app/models 下に テーブル名 .json という名前で配置 – 次のように , コマンド model sync を使って , リソース・モデル定義
を元にテーブルを作成可能
• > zero model sync
データベース接続構成 ( 続き )
リソース・モデルの定義 ( 続き )
– 定義例
{
"fields" : {
"name": {"type": "string", "max_length":50},
"birthdate": {"type": "date“},
"state": {"type": "string", "format": "region"},
"phone": {"type": "string", "format": "phone"}
}
}
リソース・モデルの定義 ( 続き )
– テーブルにインポートする初期データ ~イニシャル・データ・
フィクスチャ ~ を準備 ( オプション )
• JSON 形式で、初期データを記述
– キー ”type” の値として,テーブル名を定義
– キー ”fields” の値として, Map 形式で,初期データを定義
• <appRoot>/app/models/fixtures/initial_data.json という名前
で保管
データベース接続構成 ( 続き )
リソース・モデルの定義 (続き)
– テーブルにインポートする初期データ ~イニシャル・データ・フィクスチャ ~ を 準備 ( オプション )
• 例
[ {
"type": "persons",
"fields": {
"id" : "1",
“name" : "Tom",
"birthdate" : "2005-12-12",
“state" : “MN“,
“phone” : “111-111-1111”
} }, {
"type": "persons",
"fields": {
"id" : "2",
"name" : "Bill",
"birthdate" : "2001-03-1",
“state" : “TN“,
“phone” : “222-222-2222”
} }