4D Webサーバーはデータベースに様々なアクションを実装することを可能にする、URLやHTMLフォームアクションを提供します。
URLには以下のものがあります:
さらに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メソッドは以下のとおりです:
C_TEXT($1)
C_PICTURE($PictVar)
C_BLOB($BlobVar)
C_LONGINT($Number)
$Number:=Num(Substring($1;2;99))
GET PICTURE FROM LIBRARY($Number;$PictVar)
PICTURE TO BLOB($PictVar;$BlobVar;".gif")
WEB SEND BLOB($BlobVar;"Pict/gif")
4D Webサーバーでは、ポストされたフォームを使用することもできます。これはスタティックなページからWebサーバーにデータを送信し、全ての値を簡単に取得するというものです。POSTタイプを使用し、フォームのアクションは /4DACTION/MethodName で始まっていなければなりません。
注: フォームは2つのメソッドを使用してサブミットできます (4Dでは両方のタイプを使用できます):
- POSTは通常Webサーバーからデータベースにデータを追加するために使用します。
- GETは通常Webサーバーに、データベースから取得するデータをリクエストするために使用します。
この場合、Webサーバーがポストされたフォームを受信すると、On Web Authenticationデータベースメソッドが (存在すれば) 呼び出されます。このメソッドがTrueを返すと、MethodNameメソッドが実行されます。このメソッド内では、サーバーに投稿されたHTMLページに含まれる全てのフィールドの名前と値を取得するためにはWEB GET VARIABLES コマンドを呼び出す必要があります。
互換性に関する注意: 変換されたデータベースにおいては、互換性ページ の"Web変数を自動的に代入"オプションがチェックされている場合、特殊なCOMPILER_WEB プロジェクトメソッドが(存在していれば)最初に呼び出されていました。4Dはフォーム内のHTMLフィールドの値を取得し、呼び出されたメソッド内の変数と同じ名前を持っている場合にはその中身を4D変数の中へと自動的に移していました。この機能は現在は廃止予定となっています。より詳細な情報については、4DオブジェクトをHTMLオブジェクトにバインドする の章を参照して下さい。
フォームに適用するHTMLシンタックスは以下のタイプです:
- フォームのアクションを定義するには:
<form action="/4DACTION/MethodName" method="post">
- フォームのフィールドを定義するには:
<input type="Field_type" name="Field_name" value="Default_value">
フォーム中のフィールドごとに、4Dはフォームフィールドの値を同じ名前の変数に代入します。
4D Webデータベースにおいて、ブラウザーがスタティックなHTMLページからレコードを検索できるようにしたいとします。このページを “search.htm”とします。データベースには検索結果を表示するためのスタティックページ(“results.htm”)もあるとします。 POSTメソッドと/4DACTION/PROCESSFORMアクションがページに割り当てられています。
以下はこのページのHTMLコードです:
<FORM ACTION="/4DACTION/PROCESSFORM" METHOD=POST>
<INPUT TYPE=TEXT NAME=vNAME VALUE=""><BR>
<INPUT TYPE=CHECKBOX NAME=vEXACT VALUE="Word">Whole word<BR>
<INPUT TYPE=SUBMIT NAME=OK VALUE="Search">
</FORM>
データ入力エリアに“ABCD”とタイプし、"句として検索"オプションをチェックして検索ボタンをクリックします。
Webサーバーに送られたリクエスト内部は以下の通りです:
vNAME="ABCD"
vEXACT="Word"
OK="Search"
4DはOn Web Authenticationデータベースメソッドを (存在すれば) 呼び出し、そして以下のPROCESSFORMプロジェクトメソッドが呼び出されます:
C_TEXT($1)
C_LONGINT($vName)
C_TEXT(vNAME;vLIST)
ARRAY TEXT($arrNames;0)
ARRAY TEXT($arrVals;0)
WEB GET VARIABLES($arrNames;$arrVals)
$vName:=Find in array($arrNames;"vNAME")
vNAME:=$arrVals{$vName}
If(Find in array($arrNames;"vEXACT")=-1)
vNAME:=vNAME+"@"
End if
QUERY([Jockeys];[Jockeys]Name=vNAME)
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 BLOB および WEB SEND HTTP REDIRECTコマンドにあります。
アクションを指示した後は、データを送信するコマンド (WEB SEND FILE, WEB SEND BLOB等) を使用してレスポンスを返さなければなりません。
警告: ブラウザーをブロックしないようにするため、アクションはなるべく短時間で終わらせるようにしてください。
4Dは特別なURL (/4DACTION/) から呼ばれるメソッドにテキスト引数を渡します。これらのテキスト引数に関して:
4Dメソッドへの呼び出し元により、異なる引数を宣言しなければなりません。
- /4DACTION/ URLから呼ばれるメソッド
$1 引数を宣言します:
C_TEXT($1)
- ドキュメント中のHTMLコメントとして描かれる/4DSCRIPT/ タグから呼ばれるメソッド
メソッドは$0にテキストを返すことができます。$0 と $1 引数を宣言しなければなりません:
C_TEXT($0;$1)