LEP (Lite Enelogix Protocol) 2.0 仕様

1. 概要

LEP は, HTTP*を介して DBMS*へアクセスするための (有)バクサリーの開発した軽量プロトコルです.

DBMS 中のデータベース領域, アカウント, DBMS に対するクエリー文字列 をパラメータとし, POST または GET で HTTP 通信します.
以下の節では, HTTP のリクエストとレスポンスについての詳細を記述します.

2. リクエスト

2.1. パラメータ

format
要求するレスポンスの形式.
指定できる値 : 'xml', 'csv', 'htmlwithforms'
charset

リクエストの解釈およびレスポンスに対して要求する文字符号化方式.
ASCII*文字列のみの場合は無指定で良い.

現在の LEP 仕様では, 文字符号化を指定する文字列を厳密に規定して いない.
(LEPルータ Ver. 2006021700 に対して 指定できる値は 'SJIS' もしくは 'EUC_JP')

host
通信を試みる DBMS の稼働するホスト.
DNS*正引き可能なホスト名, もしくは IP アドレスで指定.
port
通信を試みる ポート番号*
dbms
操作を試みる DBMS の種類 (製品名).
現在の LEP 仕様では, DBMS の種類を指定する文字列を厳密に規定していない.
(LEPルータ Ver. 2006021700 に対して 指定できる値は 'Oracle', 'MySQL', 'PostgreSQL')
dbname
操作を試みるデータベースの名称.
一般的な DBMS は表よりも上位のデータの抽象オブジェクトとして "データベース" (DBMS ごとに名称は異なる) という概念を持ち, 表や権限を操作する集まりを "データベース" という単位で 扱いこれを複数提供することができる. その単位の名称.
username
操作を試みるデータベースに対するアカウント.
password
username に指定したアカウントのパスワード.
queries
操作対象のデータベースに対して有効な SQL 文の各文末に セミコロン (0x3b) を追加した文字列を一つ以上連結した文字列.

3. レスポンス

3.1. リクエストで format を指定しなかった場合

htmlwithforms で通信するために必要となるパラメータの入力フォーム を返す.
ウェブブラウザで閲覧できる.

3.2. リクエストで format に "htmlwithforms" を指定した場合

リクエストで fromat に "htmlwithformas" を指定した場合 HTTP レスポンスの本体は HTML 文書になります.
ウェブブラウザで閲覧できる.

3.3. リクエストで format に "csv" を指定した場合

リクエストで fromat に "csv" を指定した場合 HTTP レスポンスの本体は CSV 文書になります.
リクエストで queries に指定したひとつ以上の SQL 文の実行結果が すべて連結されて返されます.

ひとつの SQL 文に対する実行結果は以下の通りです.

  • 対応する SQL 文が, 実行結果が表の形式をとるような SQL 文 (SELECT 文など) であり, この SQL 文が成功した場合, 各レコードが改行コード (0x0a) で区切られ, 各フィールドがカンマ (0x2c) で区切らえたカラム群が返ります.
  • 対応する SQL 文が, 成功した場合の実行結果が成功したという 事実のみであるような SQL 文 (CREATE 文, INSERT 文など) であり, この SQL 文が成功した場合, 文字列 "SUCCEEDED" および改行コード (0x0a) が返ります.
  • 対応する SQL 文が失敗した場合, DBMS の返す SQL 文の実行失敗の内容を表す文字列, および改行コード (0x0a) が返ります.

3.4. リクエストで format に "xml" を指定した場合

リクエストで fromat に "xml" を指定した場合 HTTP レスポンスの本体は XML 文書になります. この XML 文書を構成する要素について解説します.

PI
解説 :
レスポンスの最初の要素は PI (proccessing instruction), 具体的には
<?xml version = '1.0' ${encoding}?>
といった文字列です.
${encoding} は, リクエストで charset を指定していれば,
encoding = '${charset}'
になります. ${charset} は, リクエストで charset に指定した文字列です.
RESULTS ノード
アトリビュート :
ありません.
子ノード :
ひとつ以上の RESULT ノード.
値 :
ありません.
解説 :
レスポンスとなる XML 文のトップノードです. リクエストで queries に指定した SQL 文と同じ数の RESULT ノードが, それぞれの SQL 文に対応して存在します.
RESULT ノード
アトリビュート :
ひとつの QUERY アトリビュート.
子ノード :
ひとつの ROWSET ノード
もしくは
ひとつの TYPE ノードと 0 個かひとつの VALUE ノード.
値 :
ありません.
解説 :

QUERY アトリビュートの値はリクエストで queries に指定した SQL 文のひとつです. 子ノードはこの SQL 文を実行しようとした結果を示します.

対応する SQL 文が, 実行結果が表の形式をとるような SQL 文 (SELECT 文など) であり, この SQL 文が成功した場合, ひとつの ROWSET ノードが子ノードになります.

対応する SQL 文が, 成功した場合の実行結果が成功したという 事実のみであるような SQL 文 (CREATE 文, INSERT 文など) であり, この SQL 文が成功した場合, 値が SUCCEEDED であるひとつの TYPE ノードのみが子ノードになります.

対応する SQL 文が失敗した場合, 値が ERROR であるひとつの TYPE ノードと, 失敗の内容を表現する文字列を値とするひとつの VALUE ノードが子ノードになります.

ROWSET ノード
アトリビュート :
ありません.
子ノード :
ひとつ以上の ROW ノード.
値 :
ありません.
解説 :
ひとつの表を表すノードです.
ROW ノード
アトリビュート :
ひとつの num アトリビュート.
子ノード :
ひとつ以上のフィールド名をノード名とするノード.
値 :
ありません.
解説 :
ひとつのレコードを表すノードです.
num アトリビュートは, レコード (ROW) 番号を 値とします.
表に存在するフィールドに対し, フィールド名を ノード名とするノードをひとつずつ子ノードとして持ちます.
それらのノードはアトリビュートを持たず, 各カラムの値を値として持ちます.
TYPE ノード
アトリビュート :
ありません.
子ノード :
ありません.
値 :
"ERROR" もしくは "SUCCEEDED".
解説 :
SQL 文の実行の失敗, もしくは, 成功した場合の実行結果が, 成功したという事実のみであるような SQL 文の成功を示します.
前者では "ERROR" 後者では "SUCCEEDED" を値とします.
VALUE ノード
アトリビュート :
ありません.
子ノード :
ありません.
値 :
DBMS の返す SQL 文の実行失敗の内容を表す文字列.
解説 :
SQL 文が失敗した場合に現れるノードで, DBMS の返す SQL 文の実行失敗の内容を表す文字列を値とします.

このページの先頭へ

2006年 2月17日 金曜日 16時50分46秒 JST