Tenarai::CGI::Response

CGI のレスポンスを扱うクラス

概要

HTTP のステータスコードや Content-Type などのヘッダーやクッキーといった HTTP クライアントへの応答を組み立てて出力するクラス。

以下の例では response ブロック変数が Tenarai::CGI::Response オブジェクトになります。

  1. require 'tenarai/cgi'
  2. Tenarai::CGI.new do |request, response|
  3. response.code = 200
  4. response['content-type'] = 'text/plain'
  5. response.body << 'Hello World!'
  6. end

実行結果

Status: 200 OK
Content-Type: text/plain

Hello World!

上記例の通り code メソッドに HTTP のレスポンスコードを指定します。何も指定しなかった場合は 200 が設定されます。

HTTP のコンテンツは content メソッドまたは body メソッドで設定します。

HTTP のレスポンスヘッダーは [] メソッドまたは、header メソッドで返されるハッシュオブジェクトを使って操作します。ヘッダーの名前は文字列で指定します。ここで設定したヘッダーの名前は出力時に '-' で分解された後 capitalize され再び '-' で結合されます。例えば response['content-type'] = 'text-plain' とした場合には Content-Type: text/plain と出力されます。見栄えがいいのでこうしました。

また、HTTP のレスポンスヘッダーを指定する際に、ヘッダーの名前は内部ですべて小文字に変換されます。このため、

  1. require 'tenarai/cgi'
  2. Tenarai::CGI.new do |request, response|
  3. response.code = 200
  4. response['CONTENT-TYPE'] = 'TEXT/PLAIN'
  5. response['Content-Type'] = 'Text/Plain'
  6. response['content-type'] = 'text/plain'
  7. response.body << 'Hello World!'
  8. end

とすると、以下のように出力されます。

Status: 200 OK
Content-Type: text/plain

Hello World!

クラスメソッド

new(stdout)

stdout に CGI の標準出力を指定します。

メソッド

code

HTTP のステータスコードオブジェクトを返します。デフォルトで 200 が設定されています。

header

HTTP レスポンスヘッダーがハッシュオブジェクトとして返されます。

[](key)

key で指定された HTTP レスポンスヘッダーの値が返されます。

[]=(key, val)

key で指定された HTTP レスポンスヘッダーに val の値を設定します。

content

HTTP レスポンスのコンテンツとなる文字列オブジェクトが返されます。

body

content のエイリアスです。

flush

HTTP レスポンスを CGI 標準出力に出力します。このクラスを Tenarai::CGI オブジェクトを通して使っている場合は、Tenarai::CGI オブジェクトがこのメソッドを内部で呼び出すため、ユーザが明示的に実行する必要はありません。


AdSense is disabled. Please check setting.