Solana 文档基础设施即代码标准库

HTTP 操作

send_http_request

std::send_http_request 向指定 URL 发起 HTTP 请求并导出响应结果。

输入参数

名称是否必填类型描述
url必填string请求的 URL,支持 http 和 https 协议
body可选string请求体,可为字符串或 JSON 对象
method可选string请求的 HTTP 方法,允许的方法:GET、HEAD、POST
timeout_ms可选integer请求超时时间(毫秒)
headers可选object请求头字段名称及其值的映射
pre_condition可选map命令执行前评估的前置条件
post_condition可选map命令执行后评估的后置条件

前置条件

前置条件是在命令执行前进行评估的断言。可用于判断命令是否应被执行,或根据断言结果决定是否执行特定行为。

属性描述
behavior前置条件断言未通过时的行为。选项:halt(默认)、logskip
assertion要检查的断言,应评估为布尔值,或使用 std::assert_eq 及类似函数

后置条件

后置条件是在命令执行后进行评估的断言。它们可用于判断是否需要重新执行该命令。

属性描述
retries断言失败时重新执行命令的次数。默认值:0
backoff_ms重新执行前等待的毫秒数。默认值:1000
behavior后置条件断言未通过时的行为。选项:halt(默认)、logskipcontinue
assertion要检查的断言

输出

send_http_request 操作成功执行后,以下输出将附加到该操作:

名称类型描述
response_bodystring以字符串形式返回的响应正文
status_codeintegerHTTP 响应状态码

示例

action "example" "std::send_http_request" {
url = "https://example.com"
}
output "status" {
value = action.example.status_code
}
// > status: 200

POST 请求示例

action "create_resource" "std::send_http_request" {
description = "Create a new resource"
url = "https://api.example.com/resources"
method = "POST"
headers = {
"Content-Type" = "application/json"
}
body = {
"name" = variable.name,
"value" = variable.value
}
}

带身份验证的请求

action "api_call" "std::send_http_request" {
description = "Fetch data from API"
url = "https://api.example.com/data"
method = "GET"
headers = {
"Authorization" = "Bearer ${variable.token}"
}
}
output "response" {
value = action.api_call.response_body
}
output "status" {
value = action.api_call.status_code
}

Is this page helpful?

Table of Contents

Edit Page
©️ 2026 Solana 基金会版权所有