Dominoアクセスサービスを使用したRESTサービスのプレイブック

27
RESTサービスのプレイブック 加藤 満 Domino アクセスサービスを使用した

description

Domino のデータサービスを試して見たい方への簡単なガイダンスです

Transcript of Dominoアクセスサービスを使用したRESTサービスのプレイブック

Page 1: Dominoアクセスサービスを使用したRESTサービスのプレイブック

RESTサービスのプレイブック

加藤 満

Domino アクセスサービスを使用した

Page 2: Dominoアクセスサービスを使用したRESTサービスのプレイブック

この資料について

この資料では、IBM (Lotus) Dominoで利用できるDominoアクセスサービス(以降DAS)を理解するための実践的なガイダンスです。

動作環境

– Notes/Domino 8.5.3 FP5 UpgradePack1 適用

– Notes/Domino 9 Social Edition

Page 3: Dominoアクセスサービスを使用したRESTサービスのプレイブック

DAS設定の3つのステップ

※8.5.3 でDASを利用するには UpgradePack1が適用されていることが前提になります。

1. Domino Directory 内のサーバー文書に対しての設定

2. データ交換する対象のデータベースの設定

3. データ交換する対象のビューの設定

※DASでできること• サーバー上のデータベースのリストを読み込む

• 特定のデータベースのビューとフォルダーのリストを読み込む

• 特定のビューまたはフォルダーの設計を読み込む

• 特定のビューまたはフォルダーのエントリーを読み込む

• 文書を作成、読み込む、更新、削除

Page 4: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Domino Directory の設定

ドミノサーバー文書

– 「インターネットプロトコル」ー「Domino Web Engine」タブ

• 「Domino アクセスサービス」セクションの有効なサービスにアルファベットの「Data」を入力

※この項目はUpgradePack1が適用されていないドミノサーバーでは無効です※別途「インターネットサイト」文書を作成してWebサイトを構築している場合は、「設定」タブにDomino アクセスサービスのセクションがあります

Page 5: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Domino Directory の設定 (続き)

– サーバー文書を保存した後、Domino サーバーを再起動するか、次のコンソールコマンドを入力

• tell http refresh

以上でDomino サーバー上の設定は完了です。

DASが正常に動作するかを確認するには、

http://{ホスト名}/api/data のURLを

ブラウザに入力します。

右のように、ドミノサーバー上のデータベース

の一覧がJSON形式で表示さればOKです。

※ダブルバイト(漢字)はUNICODE

Page 6: Dominoアクセスサービスを使用したRESTサービスのプレイブック

データ交換する対象のデータベースの設定

データベースプロパティの最後のタブ

– Lotus Domino データサービスを許可のプロパティ

• なし

• ビューのみ

• ビューと文書

ここでは「ビューと文書」を

選択します。

Page 7: Dominoアクセスサービスを使用したRESTサービスのプレイブック

データ交換する対象のビューの設定

ビュープロパティでのデータサービスを許可のプロパティ

– Lotus Domino データサービスの操作を許可にチェック

Page 8: Dominoアクセスサービスを使用したRESTサービスのプレイブック

ビューコレクションリソース

特定のデータベース内のビューとフォルダーのリスト取得のURI

– http://{ホスト}/{データベース}/api/data/collections

– @title: ビューまたはフォルダーのタイトル

– @folder: フォルダーの場合「true」

– @unid: ビューまたはフォルダーのユニバーサルID(UNID)

Page 9: Dominoアクセスサービスを使用したRESTサービスのプレイブック

ビュー設計リソース

ビューおよびフォルダーの設計取得のURI

– http://{ホスト}/{データベース}/api/data/collections/unid/{unid}/design

@name: 列のプログラム名@titile: 列ヘッダータイトル@width: 列の幅@field: 「true」は文書内のフィールドを参照、

「false」は計算結果

次のURIでも同様のものが取得可能http://{ホスト}/{データベース}/api/data/collections/name/{ビュー名}/design

Page 10: Dominoアクセスサービスを使用したRESTサービスのプレイブック

ビューエントリーリソース

ビューおよびフォルダーのエントリのリスト取得URI

– http://{ホスト}/{データベース}/api/data/collections/unid/{unid}

@href: このビューエントリのURI@link: 対象となる文書のURI@unid: 文書のユニバーサルID(UNID)

列に対する値: 列のプログラム名とそれに対応する値

Page 11: Dominoアクセスサービスを使用したRESTサービスのプレイブック

ビューエントリーリソース(続き)

デフォルトのURIでは取得するコンテンツの範囲は10個(0-9の範囲)

– サンプルデータベースでは300文書のうち10文書分が表示されている

次の10エントリを取得するには

http://{ホスト}/{データベース}/api/data/collections/unid/{unid}?ps=10&page=1

– 上記の例での「ps」は取得するページのサイズを10とし、ページ番号1ページより(0ページ目から開始するので実質2ページ目)

Page 12: Dominoアクセスサービスを使用したRESTサービスのプレイブック

ビューエントリーリソース(続き)

その他の主要なクエリーパラメーター

名前 型 オプション

説明

start int Yes エントリの開始番号を指定(デフォルトは0で一番最初

count int Yes 返すエントリーの数を指定。デフォルトは10。

si int Yes エントリの開始番号を指定(デフォルトは0)

ps int Yes ページのサイズ

page int Yes ページ番号

search string Yes 全文検索クエリーで合致した文書のみを返す。(全文索引が作成されている場合のみ)

searchmaxdocs int Yes 全検索クエリーで返す文書の数

sortcolumn string Yes 列のソートされたエントリーを返す

sortorder string Yes ソート順を指定。「ascending」「descending」

startkeys string Yes ソートされたエントリで開始をを指定したエントリから情報を返す

keys string Yes 指定したキーに合致したエントリーを返す。例)?sortcolumn=Title&sortorder=ascending&keys=Document1

expandlevel int Yes 指定した階層のインデントレベルをもつエントリを返す

Page 13: Dominoアクセスサービスを使用したRESTサービスのプレイブック

文書リソース

文書取得URI

– http://{ホスト}/{データベース}/api/data/documents/unid/{unid}

@href: この文書のURI@unid: 文書のユニバーサルID(UNID)@form: 文書作成に使用される

フォーム名

文書アイテムに対するフォールド名とその値

Page 14: Dominoアクセスサービスを使用したRESTサービスのプレイブック

REST を使用したノーツ文書のCRUD

REST Web サービスのコンシューマー(クライアント)側へノーツ文書内の情報を他システムへ提供をする場合は、これまで見てきた方法を使用する。

コンシューマー側から、ノーツ文書内に情報を作成したり更新するには、コンシューマー側でプログラムを用意する必要がある。

– 言語はプラットフォームによるがJava言語がもっとも標準

CRUD

– 更新:PUT

– 作成:POST

– 読み取り:GET

– 削除:DELETE

以降でCRUDを行なうのにすべてプログラミングするのは大変なので、ここでは「Poster」というFireFoxのアドオンツールを使用して検証する

Page 15: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Poster

Posterのインストール

– http://addons.mozilla.org/ja/firefox/addon/poster/

– インストール後、ツールメニューの下に起動のメニュー

Page 16: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Poster

Posterの起動

Page 17: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書読み込み

これまでのRESTの操作で使用してきたURIを画面のURLに入力し、「GET」ボタンをクリック。

– データベースアクセスに認証が必要な場合は、「User Auth」にユーザー名とそのHTTPパスワードを入力

Page 18: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書読み込み

アクセスが成功するとステータス 200 が帰り、JSON形式の情報がレスポンスとして返ってきます。

Page 19: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書読み込み

既存の文書リソースでビューにある一番先頭の文書を取得する次のURIを入力します。

– http://{ホスト名}/Employees.nsf/api/data/documents/unid/073F4DF555D4983549257C8D00157A3B

Page 20: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書更新

前のページと同じURIを用いて、今度は更新(PUT)を実行します。

– 前のページで返ってきた内容から @xxxxx をのぞくフィールドと値の部分をコピーし、年齢(Age)の値を50に変更し、Content to Send に指定します。

※Content Type: application/jsonの指定は必須です。

※今回更新したい内容はAgeだけですが、他のフィールドも指定しなければなりません。指定しない場合は、フィールドがなくなりますので要注意です。その為、ノーツ文書の更新は、既存の文書内のフィールドを読み取ってから、すべてのフィールドに対して新たに値をセットするプログラミングが必要です。

Page 21: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書更新

ステータスが200で、成功したのを確認し、ノーツ文書が正しく変更されているか確認してください。

Page 22: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書新規作成

続いて、ノーツ文書を新規作成します。新規追加するフィールドとその値は、Content to Send に残っている内容に少し手を加えたものにします。– Age、Name、AlterNameを下の赤字のように変更します。

{

"Age”:13,

"AlterName":”Katsuo Isono",

"Gender":"\u5973",

"PhoneCarrier":"\u30C9\u30B3\u30E2",

"Name":”Katsuo Isono",

"CellPhone":"090-2753-7590",

"BloodType":"AB\u578B",

"Married":"\u672A\u5A5A",

"Prefecture":"\u6771\u4EAC\u90FD",

"Email":"[email protected]",

"Birthday":"1982-01-22T15:00:00Z",

"Comment":"\u5DE6\u30EB\u30FC\u30FB\u5225\u53E3\u6D3E"

}

URLを次のようにし、「POST」ボタンをクリックします。– http://{ホスト

名}/Employees.nsf/api/data/documents?form=Employee&computewithform=true

Page 23: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書新規作成

ステータスが201になって成功したことを確認します。 ノーツクライアントに戻って、一覧ビューの一番最後に今回のデータが追加されたの

を確認してください。

Page 24: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書の削除

先ほど作成した文書を削除しますが、文書を特定するためのステップと削除のステップが必要です。

文書の特定にはUNIDを知る必要がありますが、ここではsearchパラメーターでKatsuo Isonoを探します。(Katsuo Isonoという言葉が一意でユニークであることが前提)

– http://{ホスト名}/Employees.nsf/api/data/documents?search=KatsuoIsono

Page 25: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書の削除

返ってきた内容の中のUNIDを使用してURIを次のように指定します。

– http://{ホスト名}/Employees.nsf/api/data/documents/unid/{前ページで分かったUNID}

DELETE の選択と、右の丸いボタンをクリックします。

Page 26: Dominoアクセスサービスを使用したRESTサービスのプレイブック

Posterによるノーツ文書の削除

返ってきた内容の中のUNIDを使用してURIを次のように指定します。

– http://{ホスト名}/Employees.nsf/api/data/documents/unid/{unid}

DELETE の選択と、右の丸いボタンをクリック。

Page 27: Dominoアクセスサービスを使用したRESTサービスのプレイブック

データ交換のユーザー認証

RESTサービス使用の際のユーザー認証には

– Dominoサーバーへの Basic 認証

– セッション認証

の両方をサポート