Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > net/httpライブラリ > Net::HTTPHeaderモジュール

module Net::HTTPHeader

クラスの継承リスト: Net::HTTPHeader

要約

HTTP ヘッダのためのモジュールです。

このモジュールを mix-in に @header という(ハッシュを代入してある) 変数への「大文字小文字を無視した」ハッシュ的アクセスメソッドを 提供します。またよくある HTTP ヘッダへの便利なアクセスメソッドも 用意します。

目次

インスタンスメソッド
[] []= add_field basic_auth canonical_each each_capitalized chunked? content_length content_length= content_range content_type content_type= set_content_type delete each each_header each_capitalized_name each_key each_name each_value fetch form_data= set_form_data get_fields key? length size main_type method proxy_basic_auth range range= set_range range_length sub_type type_params

インスタンスメソッド

self[key] -> String|nil[permalink][rdoc]

key ヘッダフィールドを返します。

たとえばキー 'content-length' に対しては '2048' のような文字列が得られます。キーが存在しなければ nil を返します。

一種類のヘッダフィールドが一つのヘッダの中に複数存在する 場合にはそれを全て ", " で連結した文字列を返します。 key は大文字小文字を区別しません。

[PARAM] key:
ヘッダフィール名を文字列で与えます。

[SEE_ALSO] Net::HTTPHeader#[]=, Net::HTTPHeader#add_field, Net::HTTPHeader#get_fields

self[key] = val[permalink][rdoc]

key ヘッダフィールドに文字列 val をセットします。

key に元々設定されていた値は破棄されます。 key は大文字小文字を区別しません。 val に nil を与えるとそのフィールドを削除します。

[PARAM] key:
ヘッダフィール名を文字列で与えます。
[PARAM] val:
keyで指定したフィールドにセットする文字列を与えます。

[SEE_ALSO] Net::HTTPHeader#[], Net::HTTPHeader#add_field, Net::HTTPHeader#get_fields

add_field(key, val) -> ()[permalink][rdoc]

key ヘッダフィールドに val を追加します。

key に元々設定されていた値は破棄されず、それに val 追加されます。

[PARAM] key:
ヘッダフィール名を文字列で与えます。
[PARAM] val:
keyで指定したフィールドに追加する文字列を与えます。

[SEE_ALSO] Net::HTTPHeader#[], Net::HTTPHeader#[]=, Net::HTTPHeader#get_fields

例:

request.add_field 'X-My-Header', 'a'
p request['X-My-Header']              #=> "a"
p request.get_fields('X-My-Header')   #=> ["a"]
request.add_field 'X-My-Header', 'b'
p request['X-My-Header']              #=> "a, b"
p request.get_fields('X-My-Header')   #=> ["a", "b"]
request.add_field 'X-My-Header', 'c'
p request['X-My-Header']              #=> "a, b, c"
p request.get_fields('X-My-Header')   #=> ["a", "b", "c"]
basic_auth(account, password) -> [String][permalink][rdoc]

Authorization: ヘッダを BASIC 認証用にセットします。

[PARAM] account:
アカウント名を文字列で与えます。
[PARAM] password:
パスワードを文字列で与えます。


require 'net/http'

uri = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(uri.request_uri)
req.basic_auth("user", "pass") # => ["Basic dXNlcjpwYXNz"]
each_capitalized {|name, value| .... } -> ()[permalink][rdoc]
canonical_each {|name, value| .... } -> ()

ヘッダフィールドの正規化名とその値のペアを ブロックに渡し、呼びだします。

正規化名は name に対し

name.downcase.split(/-/).capitalize.join('-')

で求まる文字列です。

chunked? -> bool[permalink][rdoc]

Transfer-Encoding: ヘッダフィールドが "chunked" である 場合に真を返します。

Transfer-Encoding: ヘッダフィールドが存在しなかったり、 "chunked" 以外である場合には偽を返します。



require 'net/http'

uri = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(uri.request_uri)
req.chunked? # => false
req["Transfer-Encoding"] = "chunked"
req.chunked? # => true
content_length -> Integer|nil[permalink][rdoc]

Content-Length: ヘッダフィールドの表している値を整数で返します。

ヘッダが設定されていない場合には nil を返します。

[EXCEPTION] Net::HTTPHeaderSyntaxError:
フィールドの値が不正である場合に 発生します。
content_length=(len)[permalink][rdoc]

Content-Length: ヘッダフィールドに値を設定します。

len に nil を与えると Content-Length: ヘッダフィールドを 削除します。

[PARAM] len:
設定する値を整数で与えます。
content_range -> Range|nil[permalink][rdoc]

Content-Range: ヘッダフィールドの値を Range で返します。 Range の表わす長さは Net::HTTPHeader#range_length で得られます。

ヘッダが設定されていない場合には nil を返します。

content_type -> String|nil[permalink][rdoc]

"text/html" のような Content-Type を表す 文字列を返します。

Content-Type: ヘッダフィールドが存在しない場合には nil を返します。

content_type=(type)[permalink][rdoc]
set_content_type(type, params = {})

type と params から Content-Type: ヘッダフィールドの 値を設定します。

[PARAM] type:
メディアタイプを文字列で指定します。
[PARAM] params:
パラメータ属性をハッシュで指定します。
delete(key) -> String | nil[permalink][rdoc]

key ヘッダフィールドを削除します。

[PARAM] key:
削除するフィールド名
[RETURN]
取り除かれたフィールドの値を返します。 key ヘッダフィールドが存在しなかった場合には nil を返します。
each {|name, val| .... } -> ()[permalink][rdoc]
each_header {|name, val| .... } -> ()

保持しているヘッダ名とその値をそれぞれ ブロックに渡して呼びだします。

ヘッダ名は小文字で統一されます。 val は ", " で連結した文字列がブロックに渡されます。

each_capitalized_name {|name| .... } -> ()[permalink][rdoc]

保持しているヘッダ名を正規化 ('x-my-header' -> 'X-My-Header') して、ブロックに渡します。

each_name {|name| ... } -> ()[permalink][rdoc]
each_key {|name| ... } -> ()

保持しているヘッダ名をブロックに渡して呼びだします。

ヘッダ名は小文字で統一されます。

each_value {|value| .... } -> ()[permalink][rdoc]

保持しているヘッダの値をブロックに渡し、呼びだします。

渡される文字列は ", " で連結したものです。

fetch(key) -> String[permalink][rdoc]
fetch(key, default) -> String
fetch(key) {|hash| .... } -> String

key ヘッダフィールドを返します。

たとえばキー 'content-length' に対しては '2048' のような文字列が得られます。キーが存在しなければ nil を返します。

該当するキーが登録されてい ない時には、引数 default が与えられていればその値を、ブロッ クが与えられていればそのブロックを評価した値を返します。

一種類のヘッダフィールドが一つのヘッダの中に複数存在する 場合にはそれを全て ", " で連結した文字列を返します。 key は大文字小文字を区別しません。

[PARAM] key:
ヘッダフィール名を文字列で与えます。
[PARAM] default:
該当するキーが登録されていない時の返り値を指定します。
[EXCEPTION] IndexError:
引数defaultもブロックも与えられてない時、キーの探索に 失敗すると発生します。

[SEE_ALSO] Net::HTTPHeader#[]

form_data=(params)[permalink][rdoc]
set_form_data(params, sep = '&') -> ()

HTMLのフォームのデータ params から ヘッダフィールドとボディを設定します。

ヘッダフィールド Content-Type: には 'application/x-www-form-urlencoded' が設定されます。

[PARAM] params:
HTML のフォームデータの Hash を与えます。
[PARAM] sep:
データのセパレータを文字列で与えます。
get_fields(key) -> [String][permalink][rdoc]

key ヘッダフィールドの値 (文字列) を配列で返します。

たとえばキー 'content-length' に対しては ['2048'] のような 文字列が得られます。一種類のヘッダフィールドが一つのヘッダの中 に複数存在することがありえます。 key は大文字小文字を区別しません。

[PARAM] key:
ヘッダフィール名を文字列で与えます。

[SEE_ALSO] Net::HTTPHeader#[], Net::HTTPHeader#[]=, Net::HTTPHeader#add_field

key?(key) -> bool[permalink][rdoc]

key というヘッダフィールドがあれば真を返します。 key は大文字小文字を区別しません。

[PARAM] key:
探すヘッダフィールド名を文字列で与えます。
size -> Integer[permalink][rdoc]
length -> Integer

このメソッドは obsolete です。

ヘッダフィールドの数を返します。

main_type -> String|nil[permalink][rdoc]

"text/html" における "text" のようなタイプを表す 文字列を返します。

Content-Type: ヘッダフィールドが存在しない場合には nil を返します。

method -> String[permalink][rdoc]

リクエストの HTTP メソッドを文字列で返します。



require 'net/http'

uri = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(uri.request_uri)
req.method # => "GET"
proxy_basic_auth(account, password) -> ()[permalink][rdoc]

Proxy 認証のために Proxy-Authorization: ヘッダをセットします。

[PARAM] account:
アカウント名を文字列で与えます。
[PARAM] password:
パスワードを文字列で与えます。
range -> Range|nil[permalink][rdoc]

Range: ヘッダの示す範囲を Range オブジェクトで返します。

ヘッダにない場合は nil を返します。

[EXCEPTION] Net::HTTPHeaderSyntaxError:
Range:ヘッダの中身が規格通り でない場合に発生します。
range=(r)[permalink][rdoc]
range=(n)
set_range(i, len) -> ()
set_range(r) -> ()
set_range(n) -> ()

範囲を指定してエンティティを取得するためのヘッダ Range: をセットします。

以下は同じことを表しています。

req.range = 0..1023
req.range = 0...1024
req.range = 1024
req.set_range(0, 1024)
req.set_range(0..1023)
req.set_range(0...1024)
req.set_range(1024)

特別な場合として、 n に負数を与えた場合にnは最初から(-n)バイトまでの範囲を表します。 r を x..-1 とした場合には、x が正ならば x バイト目から最後までの範囲を、 x が負ならば最初から x バイト目までの範囲を表します。

[PARAM] r:
範囲を Range オブジェクトで与えます。
[PARAM] i:
範囲の始点を整数で与えます。
[PARAM] len:
範囲の長さを整数で与えます。
[PARAM] n:
0からの長さを整数で与えます。
range_length -> Integer|nil[permalink][rdoc]

Content-Range: ヘッダフィールドの表している長さを整数で返します。

ヘッダが設定されていない場合には nil を返します。

[EXCEPTION] Net::HTTPHeaderSyntaxError:
Content-Range: ヘッダフィールド の値が不正である場合に 発生します。
sub_type -> String|nil[permalink][rdoc]

"text/html" における "html" のようなサブタイプを表す 文字列を返します。

Content-Type: ヘッダフィールドが存在しない場合には nil を返します。

type_params -> Hash[permalink][rdoc]

Content-Type のパラメータを {"charset" => "iso-2022-jp"} という形の Hash で返します。

Content-Type: ヘッダフィールドが存在しない場合には 空のハッシュを返します。