46
IBM Domino & REST 2016 年 6 年 10 年 Notes 年年年年年年年 年年年年年年年 2016 06/21/2022 Ricoh IT Solutions Co.,Ltd. 1 年年年 年年 年年年 IT 年年年年年年年年年年年年 年年年年年年

Domino & REST

  • Upload
    -

  • View
    945

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Domino & REST

IBM Domino&REST

2016 年 6 月 10 日

Notes コンソーシアム九州地区研究会 2016

05/01/2023 Ricoh IT Solutions Co.,Ltd. 1

海老原 賢次リコー IT ソリューションズ株式会社鹿児島事業所

Page 2: Domino & REST

Version: [0.1.0] Classification: Internal Owner: [EBIHARA Kenji]

資料を slideshare で公開しています

• Slideshare で公開していますので、後ほど振り返りでご利用ください。• http://www.slideshare.net/kenjiebihara71または

または

05/01/2023 2

XPages で行こう! 検索

slideshare ebihara kenji 検索

Page 3: Domino & REST

Version: [###] Classification: Internal Owner: [Insert name]

参考サイト

• IBM developer Works [RESTful Web サービスの基本 ] https://www.ibm.com/developerworks/jp/webservices/library/ws-restful/

• 海老原ブログ[XPages で行こう ] http://take-the-xpages.blogspot.jp/• IBM Champion 御代様[XPages で REST を使ってみたら、こんなんだった ]http://www.slideshare.net/ssuser40c5c0/x-pages-daya5-27954881

[XPages で REST を使ってみよう ]http://www.slideshare.net/ssuser40c5c0/x-pagesrest05/01/2023 3

Page 5: Domino & REST

05/01/2023 5

本日のお題

Ricoh IT Solutions Co.,Ltd.

1. REST とは

2. なぜ REST なのか

3. REST コントロール

4.事例紹介

Page 6: Domino & REST

05/01/2023 6

本日のお題

Ricoh IT Solutions Co.,Ltd.

1. REST とは

2. なぜ REST なのか

3. REST コントロール

4.事例紹介

Page 7: Domino & REST

05/01/2023 7Ricoh IT Solutions Co.,Ltd.

REST とは

システム間、またはシステムとクライアント間との通信方法のアーキテクチャ思想の1つ。

Page 8: Domino & REST

05/01/2023 8Ricoh IT Solutions Co.,Ltd.

REST とは

ブラウザで HTML ページを表示するのと同じ、 HTTP でデータをやり取りする。( Web API )

呼び出しも URL で呼びだす。(リクエストする) よって、サーバー側には Web サービスが必要。

Page 9: Domino & REST

05/01/2023 9Ricoh IT Solutions Co.,Ltd.

REST とは

やり取りするデータの種類に規定はない 最もよく使われるのが、 JSON と呼ばれるテキストデータ。

– JSON の他に XML が使われる場合もある。

Page 10: Domino & REST

05/01/2023 10Ricoh IT Solutions Co.,Ltd.

JSON とは

データの構造を表現する、テキスト形式のデータ。{ // 中括弧でオブジェクトを表現 "lastName": " 海老原 ", // 項目名 : 値の形で書く "firstName": " 賢次 ", "age": 41, "skill": [ // 配列 "domino", "XPages", "C#", "java" ], "address": { // オブジェクトの入れ子 "address1": " 鹿児島県鹿児島市吉野町 ", "address2": "xxx-xxx" }}

Page 11: Domino & REST

05/01/2023 11Ricoh IT Solutions Co.,Ltd.

REST とは

ブラウザ サーバーHTTP (リクエスト)

HTTP (レスポンス)HTML

クライアントAPP サーバーHTTP (リクエスト)

HTTP (レスポンス)JSON

JSON

Page 12: Domino & REST

05/01/2023 12Ricoh IT Solutions Co.,Ltd.

REST とは

HTTP で通信するときに、メソッドと言われる呼び出す型(動詞)を指定する。

Page 13: Domino & REST

05/01/2023 13Ricoh IT Solutions Co.,Ltd.

HTTP のメソッドとは HTTP のリクエスト(呼び出し)するときに、呼び出しの目的を指定することができる。 種類は、 HTTP の規約で決まったものがある。よく利用するメソッド

• GET … リソースの取得(ブラウザで HTML を開くときもこれ)• POST … リソースの作成、追加 (*1)• PUT … リソースの更新 (*1)• DELETE… リソースの削除(*1: 正確に表記すると、 POST は " べき等 " でない、その他は " べき等 " である、という条件が付きます。)

これ以外にも、 OPTIONS 、 HEAD 、 PATCH などがある。

Page 14: Domino & REST

05/01/2023 14

本日のお題

Ricoh IT Solutions Co.,Ltd.

1. REST とは

2. なぜ REST なのか

3. REST コントロール

4.事例紹介

Page 15: Domino & REST

05/01/2023 Ricoh IT Solutions Co.,Ltd. 15

REST のメリット

ビジネスロジックが一元化され、メンテナンス性が向上

いろいろなシステム・サービスとリアルタイムで連携しやすくなる。

シンプル。すぐに作れる。すぐ使える。

モバイルアプリなど独自の UI が提供できる。

Page 16: Domino & REST

05/01/2023 16Ricoh IT Solutions Co.,Ltd.

REST…WebAPI を設計する XPages など Web アプリケーションは、主にブラウザで情報を閲覧したり、入力したりするのが目的。 でも、データの入り口が増えたら・・・?

DominoDatabaseXPages

BL View

BL…ビジネスロジック

Page 17: Domino & REST

05/01/2023 17Ricoh IT Solutions Co.,Ltd.

REST…WebAPI を設計する 例えば、 CSVファイルをエージェントで取り込むとした場合、 XPages とエージェントで同じ処理を書かなくてはならない。→メンテナンス性低下。工数増。

DominoDatabaseXPages

BL View

BL…ビジネスロジック

エージェントBL

同じものを用意する必要がある

CSVファイル

Page 18: Domino & REST

05/01/2023 18Ricoh IT Solutions Co.,Ltd.

REST…WebAPI を設計する REST による WebAPI を作成することで、ビジネスロジックを統一できる。メンテナンス性が向上。工数減。

DominoDatabaseXPages

BLView

BL…ビジネスロジック

REST API

Page 19: Domino & REST

05/01/2023 19

本日のお題

Ricoh IT Solutions Co.,Ltd.

1. REST とは

2. なぜ REST なのか

3. REST コントロール

4.事例紹介

Page 20: Domino & REST

05/01/2023 20Ricoh IT Solutions Co.,Ltd.

Domino で REST Domino データサービス を使う

– v8.5.1ugp1 or v9.0以上。– サーバー設定文書と DB の設計要素の設定だけで可。– JSON の構造は定められたもので、カスタマイズできない。– 参考:御代様ブログ [ のおつ -Notes/Domino に関すること -]http://guylocke.blogspot.jp/2013/06/notesdomino-rest-api.html

XPages の REST コントロールを使う

Page 21: Domino & REST

05/01/2023 21Ricoh IT Solutions Co.,Ltd.

REST コントロール XPages で REST API を簡単に実装できるコントロール Domino 9.0 以降は、ビルドインされている。 Domino 8.5.3, 8.5.2 は、 Extension Library またはUpgrade Pack が必要。 SSJS で、上記以外のバージョンのサーバーにアクセスしてデータを参照、更新することもできる。

Page 22: Domino & REST

05/01/2023 22Ricoh IT Solutions Co.,Ltd.

REST コントロールの使い方 はじめに、空の XPages に "REST"サービスコントロールをドラッグ&ドロップする。

Page 23: Domino & REST

05/01/2023 23Ricoh IT Solutions Co.,Ltd.

呼び出しの URL を決めます

貼り付けた REST コントロールを選択します。 " 全てのプロパティ "の "pathInfo"に URL となる API名を入れます。 XPages の URL が http://192.168.1.1/sample.nsf/api.xspで、 "pathInfo"に "questions" という値を入れると、外部から下記の URL で API を呼びだすことができる。http://192.168.1.1/sample.nsf/api.xsp/questions

Page 24: Domino & REST

05/01/2023 24

メソッド毎の処理を書きます "service"で作成する REST の種類を選択します。 ここでは、汎用的な REST API が作れる "customRestService"を選択します。

Ricoh IT Solutions Co.,Ltd.

Page 25: Domino & REST

05/01/2023 25Ricoh IT Solutions Co.,Ltd.

メソッド毎の処理を記述する doGet, doPost, doPut, doDelete に、それぞれのメソッドで呼ばれた時のサーバーサイドスクリプトを記述します。 まずは、 GET メソッドに対応するサービスをつくります。 ここでは、キーワードを指定してビューからそのキーに一致した文書の一覧を JSON で返すことにします。

Page 26: Domino & REST

05/01/2023 26Ricoh IT Solutions Co.,Ltd.

URL パラメータの取得 GET メソッドの場合、リクエストの値を受け取るには、 URLパラメータを使います。 http://192.168.1.1/sample.nsf/api.xsp?key=word これをサーバーサイドスクリプトで受け取るには、paramオブジェクトを利用します。

var key = param.get("key");print(key); // word

URLパラメータに記号やマルチバイト文字が入る場合は、 UTF-8 で URL エンコードが必要です。例)ほげ → %e3%81%bb%e3%81%92サーバーサイドで param.get() で取得する場合、自動的にデコードして元の文字を返します。

Page 27: Domino & REST

05/01/2023 27Ricoh IT Solutions Co.,Ltd.

レスポンスで JSON を返す テストの JSON を返すには、 doGet の最後に return でストリングを返すだけです。

var key = param.get("key"); var docView = database.getView("DocView"); var docs:NotesDocumentCollection = docView.getAllDocumentsByKey(key); var array = []; // 返す JSON のオブジェクト配列を定義 var doc = docs.getFirstDocument(); while(doc != null){

var obj = {title: doc.getItemValueString("title"),tag: doc.getItemValueString("tag")

};array.push(obj);doc = docs.getNextDocument();

}return toJson(array); // Javascriptオブジェクトを JSON文字列に変換して返す

Page 28: Domino & REST

05/01/2023 28Ricoh IT Solutions Co.,Ltd.

POST のデータを受け取る GET の場合は、値を渡すのが目的なので、受け取るパラメータは少ないことが多いので、 URLパラメータで十分。 POST や PUT (新規登録、更新)の場合は、複数の多くの項目を受け付ける必要がある。 POST や PUT では通常、リクエスト Body でフォームの値や JSON を受け取る必要がある。

Page 29: Domino & REST

05/01/2023 30Ricoh IT Solutions Co.,Ltd.

JSON の受け取り方 requestContentType に“ application/json”を指定する。 requestVar に任意の変数名を指定すると、JSON を自動的に requestVar "で指定した名前でオブジェクト化し、サーバーサイド JS内で使用できる。

// リクエスト JSON{ "name": "kenji ebihara", "tag": "xpages"}// サーバーサイド JSprint(json.name); // kenji ebiharaprint(json.tag); // xpages

Page 30: Domino & REST

05/01/2023 Ricoh IT Solutions Co.,Ltd. 31

Domino の設定

Domino で、 GET,POST 以外のメソッドを受け取れるようにするには、「インターネットサイト」設定文書を作成し、使うメソッドを許可する必要があります。

サーバー設定文書インターネットサイト文書

Page 31: Domino & REST

05/01/2023 32

本日のお題

Ricoh IT Solutions Co.,Ltd.

1. REST とは

2. なぜ REST なのか

3. REST コントロール

4.事例紹介

Page 32: Domino & REST

05/01/2023 Ricoh IT Solutions Co.,Ltd. 33

スマートフォン&スマートウォッチ連携

Page 34: Domino & REST

android アプリ+スマートウォッチ

35

Page 35: Domino & REST

システム構成

36

XPages on

通知

通知

REST

REST

REST

GCM

XPages

通知

予約一覧取得予約詳細情報取得新規予約登録予約変更

メッセージ送信

Google cloud messaging

Page 36: Domino & REST

05/01/2023 Ricoh IT Solutions Co.,Ltd. 37

Q&A アプリ

Page 37: Domino & REST

05/01/2023 38Ricoh IT Solutions Co.,Ltd.

Q&A アプリ REST API 計画 オープンな Notes関連の質問Web ページ。九州地区Notesパートナー会技術部会で作成 http://qa.xpages.jp/ これに REST でデータが取得できるよう、準備中

Page 38: Domino & REST

05/01/2023 Ricoh IT Solutions Co.,Ltd. 39

外部システムとの連携

Page 39: Domino & REST

05/01/2023 40Ricoh IT Solutions Co.,Ltd.

• 大量の添付ファイル( 100GB超)があるため、 Dominoの 1DB のみでは管理が困難• ファイルは SQL Server にバイナリ・データとして格納• Domino 8.5.1 のため Extension Library は使用できなかったが、オープンソースの Java ライブラリを利用することで低コストで実現。

Page 40: Domino & REST

Version: 1.0.0 Classification: Internal Owner: EBIHARA Kenji 01/05/2023 41

事例

DB 内にバイナリでファイルがUNID をキーとして保存する

SQL Server Dominoアクセス・コントロール

書誌情報を格納

それぞれの長所を活かすとともに、利用者にシームレスでリアルタイムなサービスを提供することが可能に!

ファイルは Web サービスから直接アップ & ダウンロード

他のシステムからもWeb サービスを利用

ファイル

一覧情報 JSON

ファイルの一覧を取得してXPages 内に表示

Web サービス

DB サーバー

Page 41: Domino & REST

05/01/2023 Ricoh IT Solutions Co.,Ltd. 42

JSON の活用

Page 42: Domino & REST

01/05/2023

動的フォーム 入力画面 (1)

43

設定に合わせて表を表示

Page 43: Domino & REST

01/05/2023

動的フォーム 入力画面 (2)

44

追加ボタンを押すと、行追加のダイアログボックスが表示される

設定されたデータ型に応じてフォームが変わる

Page 44: Domino & REST

01/05/2023

動的フォーム 設定画面 (1)

45

テーブルのレイアウトを選択可能

Page 45: Domino & REST

01/05/2023

動的フォーム 設定画面 (2)

46

テーブル毎に 10項目まで指定が可能

項目のタイプを選択可能

テーブルでの列幅を指定

入力文字数の制限

Page 46: Domino & REST