Class: IceJade::Getter::Client
- Inherits:
-
Object
- Object
- IceJade::Getter::Client
- Includes:
- Transport
- Defined in:
- lib/ice_jade/getter/client.rb
Overview
通用 HTTP GET 客户端
与 IceJade::Poster::Client 并列,专用负责 GET 请求。 底层传输能力(URI 拼接、请求执行、响应适配、超时重试)复用 IceJade::Transport, 与 Poster 仅 HTTP 动词与参数构造不同:GET 幂等,无请求体,参数走 query string。
零外部依赖,内置超时控制、指数退避重试、统一 Response 包装, 与 Quantum 模块风格一致,错误不抛异常。
Constant Summary
Constants included from Transport
Instance Attribute Summary
Attributes included from Transport
#base_url, #default_headers, #max_retries, #open_timeout, #timeout
Instance Method Summary collapse
-
#get(url, params: nil, headers: {}) ⇒ IceJade::Response
发送通用 GET 请求.
-
#initialize(base_url: nil, headers: {}, timeout: 60, open_timeout: 10, max_retries: 2) ⇒ Client
constructor
A new instance of Client.
Methods included from Transport
#adapt_response, #apply_headers, #build_multipart, #build_uri, #execute, #init_transport, #merge_headers, #mime_type, #normalize_headers
Constructor Details
#initialize(base_url: nil, headers: {}, timeout: 60, open_timeout: 10, max_retries: 2) ⇒ Client
Returns a new instance of Client.
33 34 35 36 37 |
# File 'lib/ice_jade/getter/client.rb', line 33 def initialize(base_url: nil, headers: {}, timeout: 60, open_timeout: 10, max_retries: 2) init_transport(base_url: base_url, headers: headers, timeout: timeout, open_timeout: open_timeout, max_retries: max_retries) end |
Instance Method Details
#get(url, params: nil, headers: {}) ⇒ IceJade::Response
发送通用 GET 请求
与 Poster 的 post 系列方法对称:返回 IceJade::Response,错误不抛异常。 GET 幂等,超时重试同样安全。
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/ice_jade/getter/client.rb', line 65 def get(url, params: nil, headers: {}) uri = build_uri(url) if params && !params.empty? extra = URI.encode_www_form(params) uri.query = uri.query ? "#{uri.query}&#{extra}" : extra end merged_headers = merge_headers(default_headers, normalize_headers(headers)) req = Net::HTTP::Get.new(uri) apply_headers(req, merged_headers) execute(uri, req) end |