4D Webサーバーはデータベースに様々なアクションを実装することを可能にする、URLやHTMLフォームアクションを提供します。
URLには以下のものがあります:
/4DACTION/ はHTMLオブジェクトとデータベースのプロジェクトメソッドをリンクします。/4DCGI/ はHTMLオブジェクトからOn Web Connectionデータベースメソッド を呼び出します。/4DSYNC/ はテーブルのデータを同期するために使用します。さらに4D Webサーバーは追加でいくつかのURLを受け入れます:
/4DSTATS , /4DHTMLSTATS , /4DCACHECLEAR そして /4DWEBTEST は、4D Webサイトの動作状況に関する情報を入手するために使用します。これらのURLはWebサイトに関する情報 で説明しています。/4DWSDL は、Webサービスサーバー上で公開されているWebサービスの定義ファイルへのアクセスを可能にします。詳細情報はWebサービス (サーバ) コマンド とDesign Referenceマニュアルを参照してください。
シンタックス: 4DACTION/MyMethod{/Param}
利用法: URLまたはフォームアクション
このURLを使用して、HTMLオブジェクト (テキスト、ボタン...) を4Dプロジェクトメソッドにリンクできます。リンクは /4DACTION/MyMethod/Param のように記述され、MyMethod はユーザーがリンクをクリックしたときに実行される4Dプロジェクトメソッド名、Param はオプションのテキスト引数で、MyMethod メソッドの $1 に渡されます (後述の“URLから呼ばれる4Dメソッドに渡されるテキスト引数”参照)。 4Dが /4DACTION/MyMethod/Param リクエストを受け取ると On Web Authenticationデータベースメソッド が (存在すれば) 呼ばれます。このメソッドからTrue が返されると、MyMethod メソッドが実行されます。4DACTION/ をスタティックなWebページのURLに割り当てることもできます。URLのシンタックスは以下の形式でなければなりません:
<a href="/4DACTION/MyMethod/Param">Do Something</a> MyMethod プロジェクトメソッドは通常レスポンスを返すべきです (WEB SEND FILE や WEB SEND BLOB でHTMLページを送信するなど)。ブラウザーをブロックしないように、処理は可能な限り短時間で行われるようにします。
注: /4DACTION/ から呼び出されるメソッドはインターフェース要素 (DIALOG , ALERT ...) を呼び出してはいけません。
警告: /4DACTION/ URLを使用して4Dメソッドを呼び出せるようにするには、メソッドプロパティで“4D HTMLタグやURL (4DACTION) で利用可能” 属性がチェックされていなければなりません。これはデフォルトで選択されていません。詳細は接続セキュリティ を参照してください。
この例題はHTMLピクチャーオブジェクトに/4DACTION/ URLを割り当て、ページにダイナミックなピクチャーを表示する方法を説明しています。スタティックHTMLページに以下のコードを記述します:
<img src="/4DACTION/PICTFROMLIB/1000"> PICTFROMLIB メソッドは以下のとおりです:
4D Webサーバーは、ポストされたフォームを使用する際に、スタティックなページからWebサーバーにデータを送信するという新たな選択肢を提供します。POSTタイプを使用し、フォームのアクションは /4DACTION/MethodName で始まっていなければなりません。
注: フォームは2つのメソッドを使用してサブミットできます (4Dでは両方のタイプを使用できます):
POSTは通常Webサーバーからデータベースにデータを追加するために使用します。 GETは通常Webサーバーに、データベースから取得するデータをリクエストするために使用します。 この場合、Webサーバーがポストされたフォームを受信すると、COMPILER_WEB プロジェクトメソッド (存在すれば、後述参照) が呼び出され、そしてOn Web Authenticationデータベースメソッド が (存在すれば) 呼び出されます。このメソッドがTrue を返すと、MethodName メソッドが実行されます。4Dはフォームに含まれるHTMLフィールドを解析し、値を取り出して自動で4D変数に代入します。フォーム中のフィールドと4D変数は同じ名前でなければなりません。
注 : 詳細情報は4DオブジェクトをHTMLオブジェクトにバインドする を参照してください。
フォームに適用するHTMLシンタックスは以下のタイプです:
フォームのアクションを定義するには:<form action="/4DACTION/MethodName" method="post"> フォームのフィールドを定義するには:<input type="Field_type" name="Field_name" value="Default_value">
フォーム中のフィールドごとに、4Dはフォームフィールドの値を同じ名前の変数に代入します。フォームオプション (チェックボックスなど), の場合、4Dは割り当てられた変数を、選択されていれば1に、そうでなければ0に設定します。 数値の入力の場合、4Dはフィールドの値を文字から実数に変換します。
注 : フォーム中のフィールドの名前がOKであるとき (例えばサブミットボタン)、フィールド値が空でなければOKシステム変数が1に設定されます。そうでなければ0に設定されます。
4D Webデータベースが開始されていて、ブラウザーがスタティックHTMLページからレコードを検索できるようにしたいとします。このページを “search.htm”とします。データベースには検索結果を表示するための“results.htm”のようなスタティックページもあります。 POSTメソッドと/4DACTION/SEARCH アクションがページに割り当てられています。
以下はこのページのHTMLコードです:
<form action="/4DACTION/PROCESSFORM" method="post">
<input type="text" name="vname" value=""><br>
<!-- 通常ボタン名をVALUEにいれますが、解釈のためVALUEに数字を入れなければいけない-->
<input type="checkbox" name="vexact" value="1">単語全体<br>
<!-- OKは特別なケース-->
<input type="submit" name="OK" value="検索">
</form> データ入力エリアに“ABCD”とタイプし、オプションをチェックして検索ボタンをクリックします。
4Dは以下のCOMPILER_WEBメソッドを呼び出します:
この例題ではvnameに文字列"ABCD"が代入され、vexactは1に、OKも1になります (ボタン名がOKであるため)。 4DはOn Web Authenticationデータベースメソッド を (存在すれば) 呼び出し、そして以下のPROCESSFORM プロジェクトメソッドが呼び出されます:
If (OK=1)
If (vEXACT=0)
vNAME :=VNAME +"@"
End if
QUERY ([Jockeys] ;[Jockeys] Name=vNAME )
vLIST :=Char (1)
FIRST RECORD ([Jockeys] )
While (Not (End selection ([Jockeys] )))
vLIST :=vLIST +[Jockeys] Name++[Jockeys]Tel +<BR>
NEXT RECORD ([Jockeys] )
End while
WEB SEND FILE (results.htm)
...
End if
シンタックス: 4DCGI/<action>
モード: 両方
利用法: URL.
4D Webサーバーが /4DCGI/<action> URLを受信すると、On Web Authenticationデータベースメソッド が (存在すれば) 呼び出されます。このメソッドがTrue を返すと、WebサーバーはOn Web Connectionデータベースメソッド を呼び出し、$1 にURLをそのまま渡します。
/4DCGI/ URLはどのファイルにも対応しません。その役割は4DのOn Web Connectionデータベースメソッド を呼び出すことです。“<action>” 引数にはどのようなタイプの情報でも含めることができます。
このURLを使用してどのようなタイプのアクションでも行うことができます。On Web Connectionデータベースメソッド やそのサブメソッド内で$1 値 をテストして、適切なアクションを実行できます。例えば完全にカスタマイズされたHTMLからレコードの追加、検索、並び替えなどを行ったり、GIFイ メージを作成したりできます。このURLを使用する例題はPICTURE TO GIF および WEB SEND HTTP REDIRECT コマンドにあります。
アクションを指示した後は、データを送信するコマンド (WEB SEND FILE , WEB SEND BLOB 等) を使用してレスポンスを返さなければなりません。
警告: ブラウザーをブロックしないようにするため、アクションはなるべく短時間で終わらせるようにしてください。
4Dは特別なURL (/4DACTION/ ) から呼ばれるメソッドにテキスト引数を渡します。これらのテキスト引数に関して:
これらの引数を使用しない場合でも、C_TEXT コマンドを使用して明示的に定義しなければなりません。そうしなければコンパイルモードで実行されているデータベースにアクセスするWebを使用すると、以下のようなランタイムエラーが発生します: "A runtime error occurred at line number: 0 when executing the method * ON WEB CONNECTION. Invalid parameter in a Run command ". このラインタイムエラーは、HTMLリンクがクリックされることで呼び出される4Dメソッド中で、$1 テキスト引数が定義されていないことにより発生します。実行コンテキストはカレントのHTMLページであるため、 エラーはページをWebブラウザに送信したメソッドの"line 0"を参照します。明示的に$1 テキスト引数を定義することでこれらのエラーを取り除くことができます: [#code4D]// M_ADD_RECORDSプロジェクトメソッド C_TEXT($1) ` この引数を明示的に宣言しなければならない Repeat CREATE RECORD ([Clients]) // フィールドにデータを代入 SAVE RECORD ([Clients]) Until (OK=0) $1 引数にはURLに追加されたデータが格納され、HTML環境から4D環境にデータを渡すためのプレースホルダーとして使用できます。
4Dメソッドへの呼び出し元により、異なる引数を宣言しなければなりません。
/4DACTION/ URLから呼ばれるメソッド $1 引数を宣言します: ドキュメント中のHTMLコメントとして描かれる/4DSCRIPT/ タグから呼ばれるメソッド メソッドは$0にテキストを返すことができます。$0 と $1 引数を宣言しなければなりません:
シンタックス: /4DSYNC/$catalog{/TableName} /4DSYNC/TableName{/TableName}{/FieldName1,...,FieldNameN}{Params}
利用: POSTまたはGETメソッドのURL
このURLを使用して、ローカル4Dデータベースのテーブル中のデータをリモートのデータベースとHTTPで同期できます。これは例えばスマートフォン上にインストールされたクライアントアプリケーションや、サードパーティーのHTTPアプリケーションと4Dデータベースを同期するために使用できます。
/4DSYNC/ URLをGETメソッドで使用して4Dデータベースのデータを取得したり、POSTメソッドで使用して4Dデータベースのデータを更新したりできます。
使用できるHTTPリクエストは以下の通りです:
GET /4DSYNC/$catalog データベーステーブルのリストと、含まれるレコード数が返されます。例えば、PEOPLE(2レコード)とINVOICES(3レコード)という2つのテーブルがあるストラクチャにおいて http://localhost/4DSYNC/$catalog/ を使用したとき、PEOPLE 2 INVOICES 3がWebクライアントに返されます。GET /4DSYNC/$catalog/TableName TableName のストラクチャ定義が返されます。 GET /4DSYNC/ TableName /FieldName1{, FieldName 2},... TableName テーブルのFieldName フィールドのデータを返します。GET /4DSYNC/TableName/FieldName?$stamp=0&$format=json TableNameテーブルのFieldNameフィールドでstamp 0以降のデータをJSONフォーマットで返します。POST /4DSYNC/ TableName / FieldName 1{, FieldName 2},... クライアントマシン上で行われた変更を4Dデータベースに統合します。注: データ交換フォーマットにはJavaScript Object Notation (JSON) が使用されます。この書式については別途テクニカルノート等で情報が公開されます。
注: この同期メカニズムを有効にするにはデータベース設定のWeb/設定ページで、
"4DSYNC" URLを許可する オプションを選択しなければなりません。選択しない場合、4DSYNC URLを含むリクエストは失敗します。
/4DSYNC/ URLを使用する場合、以下の原則を適用する必要があります:
4Dはデータベースに仮想ストラクチャーが指定されていれば、それを基に動作します。この場合TableName と FieldName 引数はSET FIELD TITLES と[#cmd id="601"/]コマンドで指定されたテーブル名とフィールド名に対応します。これらのコマンドのスコープはセッションであるという点に留意してくだ さい。また4D Serverを使用する場合にはサーバー上のストアドプロシージャーでこれらのコマンドを使用します。 BLOBおよびピクチャフィールドは、サポートされません。 データの同期を行うには:HTTPサーバーが起動されていなければなりません。 データベース設定のWeb設定ページで、"4DSYNC" URLを使用したデータベースアクセスを許可 のオプションが選択されていなければなりません (接続セキュリティ のセクションを参照して下さい)。 データの同期を行うテーブルごとに、"複製を有効にする "プロパティが選択されていなければなりません。仮想ストラクチャーを定義する場合、同期対象のテーブルを仮想ストラクチャーに含めなければなりません。 警告 : このオプションをチェックすることにより、追加の情報が公開されるようになります。データベースへの接続が保護されるよう確認する必要があります (このオプションに関する説明は接続セキュリティ を参照)。 4Dが/4DSYNC/ リクエストを受け取ると、On Web Authenticationデータベースメソッド が (存在すれば) 呼び出されます (実際にいつ呼び出されるかは接続セキュリティ の図を参照してください)。このデータベースメソッドがTrue を返すとリクエストが実行され、そうでなければ拒否されます。