class WEBrick::HTTPServlet::ProcHandler + WEBrick::HTTPServlet::AbstractServlet
クラスの継承リスト: WEBrick::HTTPServlet::ProcHandler < WEBrick::HTTPServlet::AbstractServlet < Object < Kernel < BasicObject
要約
Proc を扱うためのサーブレット。
WEBrick::HTTPServer#mount に引数として与えることは出来ません。 WEBrick::HTTPServer#mount_procを使ってください。
特異メソッド
get_instance(server, *options) -> WEBrick::HTTPServlet::AbstractServlet
-
new(server, *options) を呼び出してサーブレットを生成して返します。 WEBrick::HTTPServer オブジェクトは実際にはこの get_instance メソッドを呼び出して サーブレットを生成します。
特に理由が無い限り AbstractServlet のサブクラスがこのメソッドを再定義する必要はありません。
- [PARAM] server:
- WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。
- [PARAM] options:
- WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。
new(proc) -> WEBrick::HTTPServlet::ProcHandler
-
自身を初期化します。
- [PARAM] proc:
- Proc オブジェクトを与えます。クライアントからのリクエストがあった時、 proc.call(request, response) のように呼び出されます。 request, response はそれぞれ WEBrick::HTTPRequest オブジェクトと WEBrick::HTTPResponse オブジェクトです。
new(server, *options) -> WEBrick::HTTPServlet::AbstractServlet
-
サーブレットを生成して返します。 WEBrick::HTTPServer オブジェクトは server に自身を指定してサーブレットを生成します。
- [PARAM] server:
- サーブレットを生成する WEBrick::HTTPServer オブジェクトを指定します。
- [PARAM] options:
- WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。
インスタンスメソッド
do_GET(request, response) -> ()
do_HEAD(request, response) -> ()
do_POST(request, response) -> ()
do_PUT(request, response) -> ()
do_DELETE(request, response) -> ()
do_OPTIONS(request, response) -> ()
-
自身の service メソッドから HTTP のリクエストに応じて 呼ばれるメソッドです。AbstractServlet のサブクラスはこれらのメソッドを適切に実装し なければいけません。返り値は特に規定されていません。
クライアントが使う可能性のある RFC で定義された HTTP のメソッドはすべて実装する必要があります。 クライアントからのリクエストに使われないと分かっているメソッドは実装しなくてもかまいません。 実装されていない HTTP メソッドであった場合、自身の service メソッドが 例外を発生させます。
このメソッドが呼ばれた時点では、クライアントからのリクエストに含まれる Entity Body の読み込みは まだ行われていません。WEBrick::HTTPRequest#query, WEBrick::HTTPRequest#body などの メソッドが読ばれた時点で読み込みが行われます。クライアントから巨大なデータが送られてくることを考慮して ユーザはプログラミングを行うべきです。
- [PARAM] request:
- クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
- [PARAM] response:
- クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
例:
require 'webrick' class HogeServlet < WEBrick::HTTPServlet::AbstractServlet def do_GET(req, res) res.body = 'hoge' end end srv = WEBrick::HTTPServer.new({ :DocumentRoot => './', :BindAddress => '127.0.0.1', :Port => 20080}) srv.mount('/', HogeServlet) trap("INT"){ srv.shutdown } srv.start
do_GET(request, response) -> ()
do_POST(request, response) -> ()
-
GET, POST リクエストを処理します。
- [PARAM] request:
- クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
- [PARAM] response:
- クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
get_instance(server, *options) -> self
-
何もせずに自身を返します。
- [PARAM] server:
- WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。
- [PARAM] options:
- WEBrick::HTTPServer#mount 第3引数以降に指定された値がそのまま与えられます。
[SEE_ALSO] WEBrick::HTTPServlet::AbstractServlet.get_instance
service(request, response) -> ()
-
指定された WEBrick::HTTPRequest オブジェクト request の WEBrick::HTTPRequest#request_method に応じて、 自身の do_GET, do_HEAD, do_POST, do_OPTIONS... いずれかのメソッドを request と response を引数として呼びます。
WEBrick::HTTPServer オブジェクトはクライアントからのリクエストがあるたびに サーブレットオブジェクトを生成し service メソッドを呼びます。
特に理由が無い限り AbstractServlet のサブクラスがこのメソッドを定義する必要はありません。
- [PARAM] request:
- クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
- [PARAM] response:
- クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
- [EXCEPTION] WEBrick::HTTPStatus::MethodNotAllowed:
- 指定された WEBrick::HTTPRequest オブジェクト req が自身に定義されていない HTTP のメソッドであった場合発生します。