More Related Content
Similar to XPagesでRESTを使ってみたら、こんなんだった (20)
More from Masahiko Miyo (14)
XPagesでRESTを使ってみたら、こんなんだった
- 2. e f f e c t
f o r c e
免責事項について(お約束です)
本資料は、個人的な見解によるものです。情報の内容に
ついては万全を期しておりますが、その内容を保証する
ものではありません。
本資料の情報は、使⽤先の責任において使⽤されるべき
ものであることを、あらかじめご了承ください。
執筆者の承諾なしに、コピー、複製、他のメディアに転
載する事はご遠慮ください。
当資料に記載された製品名または会社名はそれぞれの各
社の商標または登録商標です。
©2013 ef Co., Ltd. All rights Reserved.
- 2-
- 3. e f f e c t
f o r c e
アジェンダ
RESTとは?
RESTサービス
Notes/DominoでのRESTサービス
JSONについて
Notes/Dominoでの設定方法
Dominoディレクトリ
Notesアプリケーション
デモ(動作確認)
アプリケーションへの組み込み
XPages Extension Libraryを使⽤した場合
クライアントJavaScriptを使⽤した場合
Q&A
©2013 ef Co., Ltd. All rights Reserved.
- 3-
- 4. e f f e c t
f o r c e
RESTとは?
RESTサービス
正式名称は、「REpresentational State Transfer」
直訳すると、「具象的な状態の転送」(よく分からん・・・)
パラメータを指定して特定のURLにHTTPでアクセスすると、
狭義の意味としては、XMLで記述されたメッセージが送られて
くるインターフェースを指す。
HTTP ベースの軽量なWeb API を提供している
データにはXML やJSON などの形式を利⽤
HTTP のGET/POST/PUT/DELETE メソッドでCRUD 操作を
実現
CRUD…Create(作成)、 Read(読み込み)、 Update(更
新)、 Delete(削除)のこと
©2013 ef Co., Ltd. All rights Reserved.
- 4-
- 5. e f f e c t
f o r c e
RESTとは?
Notes/DominoでのRESTサービス
Domino上のNotesアプリケーションへHTTPプロトコルを利
⽤してアクセスするためのサービス
Notesアプリケーション、ビュー、フォルダ、文書にアクセ
ス可能
サーバ単位、アプリケーション単位で制御が可能
データの作成、読込、更新、削除(CRUD)をサポート
データフォーマットに、JavaScript からの操作が効率的な
JSONを採⽤
※「テクてくロータス 2012年3月度」資料より抜粋
©2013 ef Co., Ltd. All rights Reserved.
- 5-
- 6. e f f e c t
f o r c e
RESTとは?
JSONについて
正式名称は、「JavaScript Object Notation」
JavaScriptにおけるオブジェクトの表記法をベースとした軽
量なデータ記述言語である。
JavaScript専⽤ではなく、様々なソフトウェア間でデータの受
け渡しができるように設計されている
書式はXMLに比べて、かなり簡略化されている。
オブジェクトは{}で囲む
配列は[]で囲む
オブジェクトの要素は、:で区切る
【JSONデータのサンプル】
[
{
"@modified":"2013-06-16T03:37:44Z",
"@unid":"3D50EEFC6D5ECA1349257B8C00135AAB",
"@href":"http:¥/¥/domino90se.eflab.local:80¥/Xpages¥/ZipCode.nsf¥/api¥/data¥/documents¥/unid¥/3D50EEFC6D5ECA1349257B8C00135AAB"
}
]
©2013 ef Co., Ltd. All rights Reserved.
- 6-
- 7. e f f e c t
f o r c e
Notes/Dominoでの設定方法
Dominoディレクトリ
サーバ文書を編集モードで開く。
[インターネットプロトコル]-[Domino Web Engine]タブ
を開く。
「Domino アクセスサービス」の「有効なサービス」
に”Data”と入力する。
サーバ文書を保存する。
サーバコンソールで
tell http refresh
と入力する。
©2013 ef Co., Ltd. All rights Reserved.
- 7-
- 8. e f f e c t
f o r c e
Notes/Dominoでの設定方法
Notesアプリケーション-その1
サービスを適⽤したいノーツアプリケーションの「データ
ベースプロパティ」を開く。
一番右の[詳細]タブを開く。
「IBM Domino データサー
ビスを許可」の値を「ビュー
と文書」に変更する。
©2013 ef Co., Ltd. All rights Reserved.
- 8-
- 9. e f f e c t
f o r c e
Notes/Dominoでの設定方法
Notesアプリケーション-その2
サービスを適⽤したいノーツアプリケーションの「ビュー」
をDomino Designerで開く。
ビュープロパティにある右から二番目の[詳細]タブを開く。
「IBM Domino データサービスの操作を許可」にチェック
をつける。
ビューを保存する。
©2013 ef Co., Ltd. All rights Reserved.
- 9-
- 10. e f f e c t
f o r c e
Notes/Dominoでの設定方法
デモ(動作確認)
実際のノーツアプリケーションを見て、動作を確認してみま
しょう!
1.ノーツDBのRESTサービスチェック用URL
http://Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections
2.($All)ビューのチェック用URL
http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/ビューのUNID
3.文書のチェック用URL
http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/documents/unid/文書のUNID
4.NGのチェック用URL
http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/RESTを許可していないビューのUNID
→HTTP403エラーになります。
©2013 ef Co., Ltd. All rights Reserved.
- 10 -
- 11. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
郵便番号を入力したら、当てはまる住所情報を表示する
事前準備として、「rsTest」(任意)という名前でXPageを作
成する
「inputText1」という名前で編集ボックスを配置する
ボタンコントロールを配置して、イベントのonClickにサーバオ
プションを「すべて更新」にする
©2013 ef Co., Ltd. All rights Reserved.
- 11 -
- 12. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
[データアクセス]-[RESTサービス]コントロール
プロパティビューの「すべてのプロパティ」を下表のとおりに
設定する
№
1
カテゴリ名称
基本
項目名称
値
service
xe:viewItemFileService
2
contentType
application/json
3
databaseName
値を取得したいNotesアプリケーションのファイルパス
(自DBの場合は、空白で良い)
4
defaultColumns
true
5
keys
サーバサイドJavaScriptで、下記の内容を入力する
getComponent("inputText1").getValue()
6
viewName
「databaseName」で指定したNotesアプリケーションに
あるビューの名前
©2013 ef Co., Ltd. All rights Reserved.
- 12 -
- 13. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
[Dojo レイアウト]-[Dojoデータグリッド]コントロール
プロパティビューの「すべてのプロパティ」を下表のとおりに
設定する
№
カテゴリ名称
項目名称
値
1
データ
storeComponentId
「RESTサービス」コントロールの「ID」名を選択肢か
ら、選択する
2
基本
autoHeight
1
※検索結果を表示する行数を指定している
©2013 ef Co., Ltd. All rights Reserved.
- 13 -
- 14. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
[Dojoレイアウト]-[Dojoデータグリッド列]コントロール
「Dojoデータグリッド」コントロール内に配置する
プロパティビューの「すべてのプロパティ」を下表のとおりに
設定する
№
カテゴリ名称
項目名称
値
1
データ
field
JSONのデータを表示するビュー列のプログラム名
2
基本
label
列名として表示したい値
3
形式
width
auto
※データの値によって、自動的に幅を調整してくれる
「Dojoデータグリッド列」コントロールは、必要数分配置する
今回の場合、「郵便番号」「都道府県」「市区町村」「町域
名」の4つ分を配置する
©2013 ef Co., Ltd. All rights Reserved.
- 14 -
- 15. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
設定サンプルは下記の通り
©2013 ef Co., Ltd. All rights Reserved.
- 15 -
- 16. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
設定サンプルは下記の通り
©2013 ef Co., Ltd. All rights Reserved.
- 16 -
- 17. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
設定サンプルは下記の通り
©2013 ef Co., Ltd. All rights Reserved.
- 17 -
- 18. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
設定サンプルは下記の通り
©2013 ef Co., Ltd. All rights Reserved.
- 18 -
- 19. e f f e c t
f o r c e
アプリケーションへの組み込み
XPages Extension Libraryを使用した場合
画面サンプルは下記の通り
©2013 ef Co., Ltd. All rights Reserved.
- 19 -
- 20. e f f e c t
f o r c e
アプリケーションへの組み込み
クライアントJavaScriptを使用した場合
XPageに特別なコントロールを配置する必要はな
い
REST APIを使って、JSONデータを取得するため
のJavaScriptを記述する
必要な情報は下記の通り
エンドポイント(endpoint)というURL情報
JSONから必要なデータを取得してくるための検索
⽤URLパラメータ
©2013 ef Co., Ltd. All rights Reserved.
- 20 -
- 21. e f f e c t
f o r c e
アプリケーションへの組み込み
クライアントJavaScriptを使用した場合
行
コード
1 // 送信先
2 var svn = "http://domino90se.eflab.local";
3 var dbn = "Xpages/ZipCode.nsf";
4 var endpoint = "/api/data/collections/unid/D76B3FEBE958BECF49257B8C00037E9D";
5
エンドポイントのURL
全JSONデータが表示される
6 // 入力した郵便番号
7 var skey = document.getElementById( "#{id:zip71}" ).value;
8
9 // URLを生成
10 var url = svn + "/" + dbn + endpoint + "?search=FIELD zip7 CONTAINS " + encodeURI(skey);
11
?search以降が検索用URLパ
ラメータ
12 // XMLHttpRequestを作成
13 try {
14
// Netscape, Firefoxなど
15
xmlhttp = new XMLHttpRequest();
16 } catch (e){
17
18
try {
xmlhttp = new ActiveXObject ( "Msxml2.XMLHTTP" );
©2013 ef Co., Ltd. All rights Reserved.
// IE
- 21 -
- 22. e f f e c t
f o r c e
アプリケーションへの組み込み
クライアントJavaScriptを使用した場合
行
コード
19
} catch (e){
20
try {
21
xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" );
22
} catch (e){
23
// XMLHttpRequestの作成に失敗
24
25
// IE
}
}
26 }
27
28 // レスポンスを受け取った時に呼ばれるメソッドを指定
29 xmlhttp.onreadystatechange = method1;
30 xmlhttp.open( 'GET', url, true );
31 xmlhttp.setRequestHeader ( "Content-Type","text/json; charset=utf-8" );
RESTを使ったhttp通信
32
33 // RESTで送信
34 xmlhttp.send();
35
36
©2013 ef Co., Ltd. All rights Reserved.
- 22 -
- 23. e f f e c t
f o r c e
アプリケーションへの組み込み
クライアントJavaScriptを使用した場合
行
コード
37 function method1() {
38
// レスポンスの結果が正常の場合は、解析処理を行う
39
if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
40
var ret = xmlhttp.responseText;
41
var obj = JSON.parse( ret );
42
RESTのコールバック関数
43
document.getElementById( "#{id:prefectures1}" ).value= obj[0]['Prefectures'];
44
document.getElementById( "#{id:cities1}" ).value= obj[0]['Cities'];
45
document.getElementById( "#{id:address1}" ).value= obj[0]['Address'];
46
}
47 }
©2013 ef Co., Ltd. All rights Reserved.
- 23 -
- 24. e f f e c t
f o r c e
アプリケーションへの組み込み
クライアントJavaScriptを使用した場合
画面サンプルは下記の通り
©2013 ef Co., Ltd. All rights Reserved.
- 24 -
- 25. e f f e c t
f o r c e
まとめ
Notes/DominoでRESTを利用する意味
Notesアプリケーションのデータを他のWebシステムで動的
に再利⽤することが可能
従来は、CSVやExcel等の静的な受け渡しのみだった(はず)
他のWebシステムのデータを、XPagesを使うことにより、
Notes/Dominoで簡単に再利⽤することが可能
従来はJavaを使うといった高度な技術が必要だった
©2013 ef Co., Ltd. All rights Reserved.
- 25 -
- 26. e f f e c t
f o r c e
Q&A
質問ありますか?
質問があれば、画面右側のチャットで、「Masahiko Miyo」
あてに送ってください。
©2013 ef Co., Ltd. All rights Reserved.
- 26 -
- 27. e f f e c t
f o r c e
自己紹介
今回のセッションに関するお問い合わせは、↓こちらまで↓
御代 政彦(みよ まさひこ)
Twitter:@guylocke
Facebook:guylocke34
ブログ:のおつ(http://guylocke.blogspot.jp)
XPagesはもちろん、Notes/Dominoに関する営業的なお問い合わせは、
株式会社エフ
ef-info@effect-force.co.jp
まで!
1. Dominoの構築、運⽤サポート
2. Notes/Dominoアドオン製品の開発
3. 社内で利⽤するNotes アプリケーションの設計、開発
等、etc…
©2013 ef Co., Ltd. All rights Reserved.
- 27 -
- 28. e f f e c t
f o r c e
ご清聴ありがとうございました
本日のXPagesDayは、
当セッションをもって終了です。
明日以降も多くのセッションがあるので、
ご期待ください!
※11/8(金)は、
オフラインでのセミナー&懇親会もあります。
今日、質問できなくても「Ask the “X”perts」で
質問できますので、奮ってご参加ください!
©2013 ef Co., Ltd. All rights Reserved.
- 28 -