Powered by SmartDoc

CGI

CGIKitはCGIライブラリとしての基本的な機能も備えています。RubyにはCGIライブラリが標準添付されていますが、通常CGIKitと併用する必要はありません。

フォームデータを取得する

フォームデータはCKRequestオブジェクトから取得することができます(CKRequestオブジェクトはCKComponent#request()メソッドで取得できます)。クエリ、標準入力のどちらの送信方法でも使用するメソッドは同じです。フォームデータはハッシュとして扱われ、各キーに対して配列がセットされています。また、マルチパートのフォームデータは文字列ではなくCKByteDataオブジェクトになります。

フォームデータを取得するメソッド
メソッド 説明
form_values() フォームデータのハッシュを返す。
form_value(key),[key] キーkeyの配列の最初のオブジェクト(文字列)を返す。キーが存在しなければnilを返す。
class MainPage < CKComponent
  def get_form_value
    value = request[‘key’]
    ...
  end
end

HTMLテキスト・URLをエスケープする

CKUtilitiesモジュールにHTMLテキストとURLの特殊文字をエスケープするメソッドがあります。escape_html()escape_url()メソッドでエスケープを、unescape_html()unescape_url()メソッドでエスケープした文字列を元に戻すことができます。

環境変数を取得する

CKRequestオブジェクトにはHTTPヘッダの値がセットされており、ヘッダ名を指定して環境変数を取得することができます。また、特定の環境変数にはアクセスメソッドも用意してあります。

環境変数を取得するためのメソッド
メソッド 説明
headers() HTTPヘッダのハッシュを返す。
accept() HTTP_ACCEPT
accept_charset() HTTP_ACCEPT_CHARSET
accept_language() HTTP_ACCEPT_LANGUAGE
auth_type() AUTH_TYPE
content_length() CONTENT_LENGTH
content_type() CONTENT_TYPE
from() HTTP_FROM
gateway_interface() GATEWAY_INTERFACE
path_info() PATH_INFO
path_translated() PATH_TRANSLATED
query_string() QUERY_STRING
raw_cookie() HTTP_COOKIE
referer() HTTP_REFERER
remote_addr() REMOTE_ADDR
remote_host() HTTP_HOST
remote_ident() REMOTE_IDENT
remote_user() REMOTE_USER
request_mothed() REQUEST_METHOD
script_name() SCRIPT_NAME
server_name() SERVER_NAME
server_port() SERVER_PORT
server_protocol() SERVER_PROTOCOL
server_software() SERVER_SOFTWARE
uri(), url() REQUEST_URI
user_agent() HTTP_USER_AGENT

HTTPヘッダのパラメータを取得する

CKRequest#headers()メソッドでHTTPヘッダのパラメータのハッシュを取得できます。

HTTPレスポンスヘッダを設定する

HTTPレスポンスヘッダはCKResponseオブジェクトに設定します。headers属性にレスポンスヘッダの内容をハッシュの形式で設定してください。

class MainPage < CKComponent
  def set_http_response_header
    response.headers['Content-Type'] = 'text/html'
  end
end

CKRequest・CKResponseオブジェクトを取得する

CKRequest・CKResponseオブジェクトはそれぞれCKComponent#request()response()メソッドで取得できます。