類別 URI::WS

WS URI 的語法定義在 RFC6455 第 3 節。

請注意,Ruby URI 函式庫允許 WS URL 包含使用者名稱和密碼。根據 RFC,這是不合法的,但在 MS04-004 安全更新之前,Internet Explorer 5 和 6 曾經支援。請參閱 <URL:support.microsoft.com/kb/834489>。

常數

COMPONENT

Array,其中包含 URI::WS 可用的元件。

DEFAULT_PORT

URI::WS 的預設埠號 80。

公開類別方法

build(args) 按一下以切換來源

說明

使用元件建立新的 URI::WS 物件,並執行語法檢查。

可接受的元件包括 userinfo、host、port、path 和 query。

元件應提供為 Array,或為 Hash,其中金鑰是由元件名稱加上冒號組成。

如果使用 Array,則必須按順序傳遞元件 [userinfo, host, port, path, query]

範例

uri = URI::WS.build(host: 'www.example.com', path: '/foo/bar')

uri = URI::WS.build([nil, "www.example.com", nil, "/path", "query"])

目前,如果傳遞 userinfo 元件,此方法會根據 RFC 1738 產生無效的 WS URI。

呼叫超類別方法 URI::Generic::build
# File lib/uri/ws.rb, line 56
def self.build(args)
  tmp = Util.make_components_hash(self, args)
  super(tmp)
end

公開實例方法

request_uri() 按一下以切換來源

說明

傳回 WS URI 的完整路徑,這是 Net::HTTP::Get 所要求的。

如果 URI 包含查詢,完整路徑為 URI#path + ‘?’ + URI#query。否則,路徑僅為 URI#path。

範例

uri = URI::WS.build(path: '/foo/bar', query: 'test=true')
uri.request_uri #  => "/foo/bar?test=true"
# File lib/uri/ws.rb, line 74
def request_uri
  return unless @path

  url = @query ? "#@path?#@query" : @path.dup
  url.start_with?(?/.freeze) ? url : ?/ + url
end