2015年6月 XPagesでRESTを使ってみよう 株式会社エフ マネージャー 御代 政彦(みよ まさひこ) e f f e c t f o r c e 免責事項について 本資料は、個人的な見解によるものです。情報の内容に ついては万全を期しておりますが、その内容を保証する ものではありません。 本資料の情報は、使⽤先の責任において使⽤されるべき ものであることを、あらかじめご了承ください。 執筆者の承諾なしに、コピー、複製、他のメディアに転 載する事はご遠慮ください。 当資料に記載された製品名または会社名はそれぞれの各 社の商標または登録商標です。 ©2015 ef Co., Ltd. All rights Reserved. -2- e f f e c t f o r c e 自己紹介 まだまだ認知度が低いので… 御代 政彦(Miyo Masahiko) 2011年12月からIBM Champion for ICSをやってます Twitter:@guylocke Facebook:guylocke34 ブログ:http://guylocke.blogspot.jp のおつ 検索 [email protected] ©2015 ef Co., Ltd. All rights Reserved. -3- e f f e c t f o r c e アジェンダ RESTとは? RESTサービス JSONについて Dominoアクセスサービス Dominoアクセスサービス Notes/Dominoの設定 サンプルURL XPagesへの応用 RESTコントロールを使った例 OnTime OpenAPIを使った例 まとめ 注意事項、参考情報 ©2015 ef Co., Ltd. All rights Reserved. -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(削除)のこと ©2015 ef Co., Ltd. All rights Reserved. -5- e f f e c t f o r c e RESTとは? JSONについて 正式名称は、「JavaScript Object Notation」 JavaScriptにおけるオブジェクトの表記法をベースとした軽 量なデータ記述言語である。 JavaScript専⽤ではなく、様々なソフトウェア間でデータの受 け渡しができるように設計されている 書式はXMLに比べて、かなり簡略化されている。 オブジェクトは{}で囲む 配列は[]で囲む オブジェクトの要素は、:で区切る ©2015 ef Co., Ltd. All rights Reserved. -6- e f f e c t f o r c e RESTとは? JSONのデータサンプル { "name" : "Masahiko Miyo", "age" : 45, 数値や論理値も扱える "male" : true, "emails" : ["[email protected]", "[email protected]"], "address" : { "street" : "3-13-16 Mita", "zipCode" : "108-0073", "city" : "Minato-Ku", "country" : "Japan", "country-knj" : "¥u65e5¥u672c" } Unicodeで”日本”と書いてある } 1. 2. 3. 4. 5. 6. 項目名:値という形で記述する 項目名は“”(ダブルクォーテーション)で囲うこと 値は、文字列、数値、日付/時刻、論理値等を記述可能 日本語はUnicodeでエンコードすること 配列は、[]で囲うこと 項目名の大文字小文字は区別されるので注意すること ©2015 ef Co., Ltd. All rights Reserved. -7- e f f e c t f o r c e Dominoアクセスサービス Dominoアクセスサービス Domino 8.5.3 Upgrade Pack1から採⽤されたDominoの データにアクセスするためのREST API Domino上のNotesアプリケーションへHTTPプロトコルを利⽤ してアクセスするためのサービス Notesアプリケーション、ビュー(フォルダ含む)、文書にア クセス可能 データの作成、読込、更新、削除(CRUD)をサポート データフォーマットに、JavaScript からの操作が効率的な JSONを採⽤ ©2015 ef Co., Ltd. All rights Reserved. -8- e f f e c t f o r c e Dominoアクセスサービス Notes/Dominoの設定(1) Dominoディレクトリにあるサーバ文書の[インターネットプ ロトコル]-[Domino Web Engine]タブを開く。 「Domino アクセスサービス」の「有効なサービス」にサー ビス名を設定する。 2015年6月の時点で設定可能なのは「Data, TravelerAdmin, Calendar, Mail, FreeBusy」。 サーバ文書の保存後はサーバコンソールで tell http refresh と入力する。 「TravelerAdmin」はIBM Notes Travelerをイン ストールすると、自動で設定されます。 IBM Domino 9.0.1以降のみで有効 「Mail」及び「FreeBusy」サービスの利用は Extension Library 9.0.1が導入されている必要があ ります。 ©2015 ef Co., Ltd. All rights Reserved. -9- e f f e c t f o r c e Dominoアクセスサービス Notes/Dominoの設定(2) サービスを適⽤したいNotesアプリケーションの「データ ベースプロパティ」を開きます。 一番右の[詳細]タブを開きます。 「IBM Domino データサービス を許可」の値を「ビューと文書」 に変更します。 ©2015 ef Co., Ltd. All rights Reserved. - 10 - e f f e c t f o r c e Dominoアクセスサービス Notes/Dominoの設定(3) サービスを適⽤したいNotesアプリケーションの「ビュー」 (もしくはフォルダ)をDomino Designerで開きます。 ビュープロパティにある右から二番目の[詳細]タブを開きま す。 「IBM Domino データサービスの操作を許可」にチェック をつけます。 ビューを保存します。 文書情報へとアクセスするのに「フォーム」に対して、Domino データサービスの設定は必要ない。 →設定する箇所がない ©2015 ef Co., Ltd. All rights Reserved. - 11 - e f f e c t f o r c e Dominoアクセスサービス DominoでのJSONのデータサンプル [ { "@title":"Administration Requests", "@filepath":"admin4.nsf", "@replicaid":"49257B45034CEF77", "@template":"StdR4AdminRequests", "@href":"¥/admin4.nsf¥/api¥/data¥/collections" }, { "@title":"¥u30D1¥u30B9¥u30EF¥u30FC¥u30C9¥u3042¥u308A¥u306A¥u3057¥u30C6¥u30B9¥u3 0C8", "@filepath":"abcdefg.nsf", "@replicaid":"492576AF0007568C", "@template":"", "@href":"¥/abcdefg.nsf¥/api¥/data¥/collections" } ] ©2015 ef Co., Ltd. All rights Reserved. - 12 - e f f e c t f o r c e Dominoアクセスサービス サンプルURL Webブラウザで、下記のURLを入力してみよう IEの場合、ファイルを保存するかどうか聞かれるので保存する No. 内容 URL 1 DominoサーバーのNotesアプ リケーションの一覧 http:// Dominoのホスト名/api/data 2 ノーツDBのRESTサービス チェック http://Dominoホスト名/hoge.nsf/api/data/collections?page=n 3 ビューのチェック http:// Dominoのホスト名/hoge.nsf/api/data/collections/unid/ビューUNID 4 文書のチェック http:// Dominoのホスト名/hoge.nsf/api/data/documents/unid/文書UNID 5 指定したユーザのカレンダー のイベントの一覧 http://Dominoのホスト名/メールDB名/api/calendar/events 6 指定したカレンダー文書の内 容 http://Dominoのホスト名/メールDB名/api/calendar/events/文書UNID-Lotus_Notes_Generated 1. 2. 3. 4. Notesアプリケーションの一覧とは、「タイトル」、「ファイル名」、「レプリカID」等を指す ?page=nは複数ページにまたがる場合に利⽤可能(表示したいページ数を指定する) RESTアクセスを許可していないビューのUNIDを指定すると、「HTTP403」エラーになる カレンダーのRESTサービスはIBM Domino 9.0.1から利⽤可能 ©2015 ef Co., Ltd. All rights Reserved. - 13 - e f f e c t f o r c e XPagesへの応⽤ RESTコントロールを使った例 XAgentとlivedoor天気情報を使⽤して、JSONデータを取得 する XAgentの内容については下記を参照 http://guylocke.blogspot.jp/2014/12/xagent.html RESTコントロールを設置することで、JSONデータを取得する 方法だけ記述すれば良くなる 設定方法は次ページ参照 ©2015 ef Co., Ltd. All rights Reserved. - 14 - e f f e c t f o r c e XPagesへの応⽤ № 1 RESTコントロールの設定例 カテゴリ名称 基本 項目名称 値 id restService1(任意の値) 2 pathInfo restData(任意の値) 3 service xe:customRestService 4 contentType application/json 5 doGet *下図参照 doGetの記述サンプル ©2015 ef Co., Ltd. All rights Reserved. - 15 - e f f e c t f o r c e XPagesへの応⽤ JSONへのアクセス方法 下図は、お天気Webサービスにアクセスしたときのレスポンス(JSONで返ってくる) このページは、前述したRESTコントロールで取得するようにしてある ©2015 ef Co., Ltd. All rights Reserved. - 16 - e f f e c t f o r c e XPagesへの応⽤ サンプル画面 XAgentで取得した天気予報データを利⽤してXPagesに組み 込んだサンプル [天気情報検索]ボタンのプログラムは昨年紹介したCSJSを流⽤。 【検索プログラムの大まかな流れ】 1. エンドポイント(HTTPアクセスするURL)を設定 この時、固有なキーなども同時に設定する リクエストヘッダやメソッドの種類、リクエストのJSONなども設定 HTTP通信の結果によって、実行するロジックを記述 2. XMLHttpRequestの定義 3. HTTPリクエストの内容設定 4. HTTP送信 5. コールバック関数の定義 ©2015 ef Co., Ltd. All rights Reserved. - 17 - e f f e c t f o r c e XPagesへの応⽤ OnTime OpenAPIを使った例 OnTime Group CalendarにもREST APIが実装されている OnTime Group Calendar API Explorer を試すためのサイト (Username: demo / Password: demo) http://demo.ontimesuite.com/apiexplorer 自社でOnTimeを導入している場合は以下のURLでテスト可能 http://Dominoのホスト名/OnTimeクライアントDBのパス名 API Explorerを使うことで、RequestのURLやRequest⽤の JSONの書式がわかるようになっている ©2015 ef Co., Ltd. All rights Reserved. - 18 - e f f e c t f o r c e XPagesへの応⽤ OnTime OpenAPIを使った例 OnTime Open APIをXPagesで利⽤したサンプルプログラム 1. OnTimeのログイン情報を持つTokenの取得 2. OnTimeのUserIDの取得 3. 指定した日付のスケジュール文書のUNIDの取得 4. 指定した文書UNIDのカレンダー情報の取得 5. 設定した内容をスケジュール文書に書き込む OnTime 経由(Sync機能)で、ノーツと即時連携可能! 1. OnTime Group Calendarに即時に反映される 2. OnTimeを通じて、ノーツのスケジュール文書に即時に反映さ れる XPagesならCSJSで記述可能! 1. 前述したお天気Webサービスと同様の記述で実行可能! ©2015 ef Co., Ltd. All rights Reserved. - 19 - e f f e c t f o r c e XPagesへの応⽤ デモ(動作確認) OnTime OpenAPIのサンプルプログラムは、映像で見ま しょう♪ ©2015 ef Co., Ltd. All rights Reserved. - 20 - e f f e c t f o r c e まとめ Notes/DominoでRESTを利用する Notesアプリケーションのデータを他のWebシステムで動的 に再利⽤することが可能 従来は、CSVやExcel等の静的な受け渡しのみだった 他のWebシステムのデータをXPages経由で、Dominoで利 ⽤することが可能 JavaScriptを利⽤出来るようになったので敷居が少し低くなっ た RESTコントロールを使うことで、JSONの取得が簡単に! データ取得の記述のみで良い! OnTime OpenAPIは利用方法が簡単! API Explorerを利⽤することで、JSONの取得方法が簡単にわ かる! ©2015 ef Co., Ltd. All rights Reserved. - 21 - e f f e c t f o r c e まとめ RESTを利用する際の注意事項 同一オリジンのサイト(プロトコル、ドメイン、ポート番号 が同じである)でないと、リソースへのアクセスができない Cross-Origin Resource Sharing(CORS)の有効化が必要 JSONP(JSON with padding)を利⽤することでも回避可能 XAgentを使ってサーバー経由で取得してもよい 外部のWebサービスの場合、仕様の確認が大事 ぐるなびAPIやOnTime OpenAPIでは、アプリケーション⽤の キーが必要になるので、別途取得する必要がある。 APIの仕様が変わることにより、データの取得方法が変わる場 合がある。 ©2015 ef Co., Ltd. All rights Reserved. - 22 - e f f e c t f o r c e まとめ DAS/REST関連のWebサイト IBM Domino Access Services 9.0.1 IBM Notes and Domino Application Development wiki内のサイト(英語) http://ibm.co/1wGMxzh デモで利用したツール/サービス REST Client Firefoxのアドオン。Response Headersの詳細も確認できる。日本語はUnicode をデコード表示してくれるので分かり易い。 http://restclient.net/ JSON Viewer Firefoxのアドオン。JSONドキュメントをブラウザー内で階層化表示してくれる。 ダブルバイトもデコードしてくれるので、とても見やすい。 http://jsonview.com/ Weather Hacks(お天気Webサービス ) Livedoorのお天気Webサービス。全国142カ所の今日・明日・あさっての天気予 報・予想気温と都道府県の天気概況情報を提供している。 http://weather.livedoor.com/weather_hacks/webservice OnTime Group Calendar API Explorer OnTime Group Calendar内にあるOnTime OpenAPIをエミュレートするための ツール。 http://demo.ontimesuite.com/apiexplorer ©2015 ef Co., Ltd. All rights Reserved. - 23 - e f f e c t f o r c e ご清聴ありがとうございました REST APIを覚えて使ってね♪ ©2015 ef Co., Ltd. All rights Reserved. - 24 -
© Copyright 2024 ExpyDoc