Notes DBにJSON形式のデータを送信し文書を作成・更新する

Domino Data Serviceを使うとNotes DBにHTTPでJSON形式のデータを送信し文書の新規作成や更新をすることができる。

Domino Data Serviceを使うための設定はこちらを参照。

JSON形式で送信する場合、リクエストのヘッダにContent-typeを"application/json"で指定する必要がある。
作成・更新・削除のリクエストURLと送信タイプはそれぞれ以下の通り。
  •  文書の作成
    URL: http(s)://[サーバ名]:[ポート]/[DBパス]/api/data/documents
    Method: POST
     
  • 文書の更新
    URL: http(s)://[サーバ名]:[ポート]/[DBパス]/api/data/documents/unid/[UNID]
    Method: PUT
  • 文書の削除
    URL: http(s)://[サーバ名]:[ポート]/[DBパス]/api/data/documents/unid/[UNID]
    Method: DELETE
XMLHttpResponsを使ってデータを送信する関数は以下のとおり。

注意1)Xpagesなどで使う場合はDOCTYPEをデフォルトから変更していないと使えないかもしれません(DOCTYPEの変更方法はこちら)。
注意2)クロスドメイン対応してません。


◆引数の説明
server
サーバのURL
ex.)server = "http://domino01.mydomain.co.jp"
dbpath
DBのパス(リダイレクトルールを作っている場合はURLパターン)
ex.)dbpath = "WebApps/test.nsf"
form
新規作成するフォーム名
json
json形式のテキストデータ
unid
更新・削除対象となる文書のユニバーサルID

◆関数
//JSON形式のデータから文書を作成
function createDocFromJSON(server, dbpath, form, json){
    var request = new XMLHttpRequest();
    var url =
    server
    + '/' + dbpath
    + '/api/data/documents?coumputeform=true&form=' + form;
    request.open('POST', url);
    request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    request.setRequestHeader('Access-Control-Allow-Methods', 'POST, PUT, GET, DELETE, OPTIONS');
    request.send(json);
}

//JSON形式のデータで文書を更新
function updateDocFromJSON(server, dbpath, unid, json){
    var request = new XMLHttpRequest();
    var url =
    server
    + '/' + dbpath
    + '/api/data/documents/unid/' + unid + '?coumputeform=true';
    request.open('PUT', url);
    request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    request.setRequestHeader('Access-Control-Allow-Methods', 'POST, PUT, GET, DELETE, OPTIONS');
    request.send(json);
}

//UNIDを指定して文書を削除
function deleteDocByUNID(server, dbpath, unid){
    var request = new XMLHttpRequest();
    var url =
    server
    + '/' + dbpath
    + '/api/data/documents/unid/' + unid;
    request.open('DELETE', url);
    request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    request.setRequestHeader('Access-Control-Allow-Methods', 'POST, PUT, GET, DELETE, OPTIONS');
    request.send();
}