跳转至

GFRequestEnvelope

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/utilities/io/gf_request_envelope.gd
  • 模块:Standard
  • 继承:RefCounted
  • API:public
  • 类别:事件契约 (event_contract)
  • 首次版本:3.17.0

通用可重放请求描述。 只保存请求方法、地址、载荷、Header、重试与元数据,不绑定具体服务端、 账号、鉴权或业务协议。

成员概览

类型 名称 签名
属性 request_id var request_id: StringName = &""
属性 method var method: int = HTTPClient.METHOD_GET
属性 url var url: String = ""
属性 body var body: Dictionary = {}
属性 headers var headers: PackedStringArray = PackedStringArray()
属性 idempotency_key var idempotency_key: String = ""
属性 created_at_unix var created_at_unix: int = 0
属性 attempt_count var attempt_count: int = 0
属性 max_attempts var max_attempts: int = 3
属性 retry_after_msec var retry_after_msec: int = 0
属性 last_error var last_error: String = ""
属性 metadata var metadata: Dictionary = {}
方法 configure func configure( p_method: int, p_url: String, p_body: Dictionary = {}, p_headers: PackedStringArray = PackedStringArray(), p_metadata: Dictionary = {} ) -> GFRequestEnvelope:
方法 is_valid func is_valid() -> bool:
方法 can_attempt func can_attempt(now_msec: int = -1) -> bool:
方法 is_exhausted func is_exhausted() -> bool:
方法 mark_attempt func mark_attempt() -> void:
方法 mark_failure func mark_failure(error: String, retry_delay_msec: int = 0) -> void:
方法 mark_success func mark_success() -> void:
方法 duplicate_request func duplicate_request() -> GFRequestEnvelope:
方法 to_dict func to_dict(json_compatible: bool = false) -> Dictionary:
方法 apply_dict func apply_dict(data: Dictionary, json_compatible: bool = false) -> void:
方法 get_method_name func get_method_name() -> String:
方法 from_dict static func from_dict(data: Dictionary, json_compatible: bool = false) -> GFRequestEnvelope:

属性

request_id

  • API:public
var request_id: StringName = &""

请求稳定标识;为空时由 Outbox 入队时生成。

method

  • API:public
var method: int = HTTPClient.METHOD_GET

HTTPClient.Method 数值。即使传输层不是 HTTP,也可把它当作通用动作类型使用。

url

  • API:public
var url: String = ""

请求目标地址或项目自定义端点。

body

  • API:public
var body: Dictionary = {}

请求载荷。框架不解释字段含义。

结构:

  • body: Dictionary,项目传输层持有的请求载荷。

headers

  • API:public
var headers: PackedStringArray = PackedStringArray()

请求 Header,使用 Godot HTTPRequest 兼容的 Name: Value 字符串格式。

idempotency_key

  • API:public
var idempotency_key: String = ""

幂等键;为空时不参与任何框架逻辑。

created_at_unix

  • API:public
var created_at_unix: int = 0

创建时间,Unix 秒。

attempt_count

  • API:public
var attempt_count: int = 0

已尝试次数。

max_attempts

  • API:public
var max_attempts: int = 3

最大尝试次数;小于等于 0 表示不限制。

retry_after_msec

  • API:public
var retry_after_msec: int = 0

下一次允许重试的毫秒时间戳,基于 Time.get_ticks_msec()。

last_error

  • API:public
var last_error: String = ""

最近一次失败原因。

metadata

  • API:public
var metadata: Dictionary = {}

项目自定义元数据。框架不解释该字段。

结构:

  • metadata: Dictionary,随请求持久化的项目侧元数据。

方法

configure

  • API:public
func configure( p_method: int, p_url: String, p_body: Dictionary = {}, p_headers: PackedStringArray = PackedStringArray(), p_metadata: Dictionary = {} ) -> GFRequestEnvelope:

配置请求并返回自身。

参数:

名称 说明
p_method HTTPClient.Method 数值。
p_url 请求目标地址或项目自定义端点。
p_body 请求载荷。
p_headers 请求 Header。
p_metadata 项目自定义元数据。

返回:当前请求描述。

结构:

  • p_body: Dictionary,项目传输层持有的请求载荷。
  • p_metadata: Dictionary,随请求持久化的项目侧元数据。

is_valid

  • API:public
func is_valid() -> bool:

检查请求是否具备最小有效信息。

返回:有效时返回 true。

can_attempt

  • API:public
func can_attempt(now_msec: int = -1) -> bool:

检查当前时刻是否允许再次尝试。

参数:

名称 说明
now_msec 当前毫秒时间戳;小于 0 时自动读取。

返回:可尝试时返回 true。

is_exhausted

  • API:public
func is_exhausted() -> bool:

检查是否已耗尽尝试次数。

返回:已耗尽时返回 true。

mark_attempt

  • API:public
func mark_attempt() -> void:

记录一次发送尝试。

mark_failure

  • API:public
func mark_failure(error: String, retry_delay_msec: int = 0) -> void:

记录失败并安排下一次重试。

参数:

名称 说明
error 失败原因。
retry_delay_msec 从现在起等待多少毫秒后可重试。

mark_success

  • API:public
func mark_success() -> void:

记录成功状态。

duplicate_request

  • API:public
func duplicate_request() -> GFRequestEnvelope:

复制请求描述。

返回:新请求描述。

to_dict

  • API:public
func to_dict(json_compatible: bool = false) -> Dictionary:

转为字典。

参数:

名称 说明
json_compatible 为 true 时会把载荷与元数据转换为 JSON 兼容值。

返回:请求字典。

结构:

  • return: Dictionary,包含 request_id、method、method_name、url、body、headers、idempotency_key、重试字段、last_error 和 metadata。

apply_dict

  • API:public
func apply_dict(data: Dictionary, json_compatible: bool = false) -> void:

从字典恢复。

参数:

名称 说明
data 请求字典。
json_compatible 为 true 时会先恢复类型化 JSON 值。

结构:

  • data: Dictionary,包含 request_id、method、url、body、headers、idempotency_key、重试字段、last_error 和 metadata。

get_method_name

  • API:public
func get_method_name() -> String:

获取方法名称。

返回:方法名称。

from_dict

  • API:public
static func from_dict(data: Dictionary, json_compatible: bool = false) -> GFRequestEnvelope:

从字典创建请求描述。

参数:

名称 说明
data 请求字典。
json_compatible 为 true 时会先恢复类型化 JSON 值。

返回:请求描述。

结构:

  • data: Dictionary,包含 request_id、method、url、body、headers、idempotency_key、重试字段、last_error 和 metadata。