www.cgiライブラリのcgi-main手続きを利用すると、CGIに必要ないくつかの処理を簡単に書くことができます。
(cgi-main (lambda (params) ...) ;; HTTPヘッダを含むリストを返す手続き )
cgi-mainの最初の引数は「HTTPのヘッダ部を含むリストを返す手続き」です。ここではlambda式を書いて無名の手続きとして記述しています。
この手続きの最初の引数に渡されるのは「CGIに与えられたパラメータのリスト」です。ここでは最初の引数にparamという名前を付けています。このサンプルではparamは使われませんが、次節以降でCGIパラメータの取得方法を説明します。
HTTPのヘッダ部を含むリストを構築する上で便利な手続きがあります。www.cgiライブラリのhttp-header手続きです。
(cgi-header)
引数なしで単独で記述すると次のHTTPのヘッダ部を出力します。
Content-Type: text/html; charset=UTF-8
上記のUTF-8となっている箇所はGaucheの内部エンコーディングです。どの内部エンコーディングでビルドされたGaucheであるかによってかによってこの値は異なります。
HTTPの本体部ではまずtext.html-liteライブラリのhtml-doctype手続きを書いています。
(html-doctype)
この手続きが引数なしで評価されると以下のHTML Doctypeを出力します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
HTTPの本体部では、HTML Doctypeに続いて、text.html-liteライブラリを使って構築されたHTML要素のツリーが出力されます。
(html:html
(html:body
(html:p "Hello, Gauche!")))
cgi-main手続きによって、上記は以下のHTMLとして出力されます。
<html><body><p>Hello, Gauche!</p ></body ></html >
www.cgiを使うとCGIが楽に書けることを見てきました。次節以降ではCGIパラメータの取得方法やHTMLエスケープの方法を説明します。