HTTP 服务

[English]

  • 辅助头文件: #include "brookesia/service_helper/network/http.hpp"

  • 辅助类: esp_brookesia::service::helper::Http

概述

brookesia_service_http 以 Brookesia 服务函数和事件提供 HTTP/HTTPS 客户端请求能力。

核心职责

  • 把 ESP-IDF HTTP client 行为封装在服务 schema 后。

  • 支持请求提交、取消、内存响应、文件下载、进度和完成事件。

  • 供应用和智能体获取包索引、下载、云配置和网络资源。

集成位置

该组件是 ESP-Brookesia 发布组件清单中的独立组件,可通过 ESP-IDF 组件依赖集成,并与同层框架组件按需组合。

服务接口

函数

Request

描述

Submit an HTTP request and wait for the response.

执行要求
  • 是否需要调度器: 不需要

参数
  • Request

    • 类型: Object

    • 是否必填: 必填

    • 描述: HTTP request object.

返回值
  • 类型: Object

  • 描述: Example: {"request_id":1,"status_code":200,"headers":{},"body":"{"ok":true}","file_path":"","error":"Ok","error_message":""}

Schema JSON
展开查看 JSON

{
  "name": "Request",
  "description": "Submit an HTTP request and wait for the response.",
  "require_scheduler": false,
  "default_timeout_ms": null,
  "parameters": [
    {
      "name": "Request",
      "description": "HTTP request object.",
      "type": "Object",
      "required": true,
      "default_value": null
    }
  ],
  "return_value": {
    "type": "Object",
    "description": "Example: {\"request_id\":1,\"status_code\":200,\"headers\":{},\"body\":\"{\\\"ok\\\":true}\",\"file_path\":\"\",\"error\":\"Ok\",\"error_message\":\"\"}"
  }
}
CLI 命令
svc_call Http Request {"Request":null}

RequestAsync

描述

Submit an HTTP request asynchronously.

执行要求
  • 是否需要调度器: 不需要

参数
  • Request

    • 类型: Object

    • 是否必填: 必填

    • 描述: HTTP request object.

返回值
  • 类型: Number

  • 描述: Request id number.

Schema JSON
展开查看 JSON

{
  "name": "RequestAsync",
  "description": "Submit an HTTP request asynchronously.",
  "require_scheduler": false,
  "default_timeout_ms": null,
  "parameters": [
    {
      "name": "Request",
      "description": "HTTP request object.",
      "type": "Object",
      "required": true,
      "default_value": null
    }
  ],
  "return_value": {
    "type": "Number",
    "description": "Request id number."
  }
}
CLI 命令
svc_call Http RequestAsync {"Request":null}

CancelRequest

描述

Cancel a pending or running HTTP request.

执行要求
  • 是否需要调度器: 不需要

参数
  • RequestId

    • 类型: Number

    • 是否必填: 必填

    • 描述: Request id returned by RequestAsync.

Schema JSON
展开查看 JSON

{
  "name": "CancelRequest",
  "description": "Cancel a pending or running HTTP request.",
  "require_scheduler": false,
  "default_timeout_ms": null,
  "parameters": [
    {
      "name": "RequestId",
      "description": "Request id returned by RequestAsync.",
      "type": "Number",
      "required": true,
      "default_value": null
    }
  ],
  "return_value": null
}
CLI 命令
svc_call Http CancelRequest {"RequestId":null}

GetRequestState

描述

Get HTTP request state.

执行要求
  • 是否需要调度器: 不需要

参数
  • RequestId

    • 类型: Number

    • 是否必填: 必填

    • 描述: Request id returned by RequestAsync.

返回值
  • 类型: Object

  • 描述: Example: {"request_id":1,"state":"Completed","error":"Ok","status_code":200,"downloaded":128,"total":128}

Schema JSON
展开查看 JSON

{
  "name": "GetRequestState",
  "description": "Get HTTP request state.",
  "require_scheduler": false,
  "default_timeout_ms": null,
  "parameters": [
    {
      "name": "RequestId",
      "description": "Request id returned by RequestAsync.",
      "type": "Number",
      "required": true,
      "default_value": null
    }
  ],
  "return_value": {
    "type": "Object",
    "description": "Example: {\"request_id\":1,\"state\":\"Completed\",\"error\":\"Ok\",\"status_code\":200,\"downloaded\":128,\"total\":128}"
  }
}
CLI 命令
svc_call Http GetRequestState {"RequestId":null}

ResetStatistics

描述

Reset HTTP service statistics.

执行要求
  • 是否需要调度器: 不需要

参数
  • 无。

Schema JSON
展开查看 JSON

{
  "name": "ResetStatistics",
  "description": "Reset HTTP service statistics.",
  "require_scheduler": false,
  "default_timeout_ms": null,
  "parameters": [],
  "return_value": null
}
CLI 命令
svc_call Http ResetStatistics

事件

RequestStarted

描述

HTTP request started.

执行要求
  • 是否需要调度器: 需要

参数
  • RequestId

    • 类型: Number

    • 描述: Request id.

  • State

    • 类型: String

    • 描述: Request state.

Schema JSON
展开查看 JSON

{
  "name": "RequestStarted",
  "description": "HTTP request started.",
  "require_scheduler": true,
  "items": [
    {
      "name": "RequestId",
      "description": "Request id.",
      "type": "Number"
    },
    {
      "name": "State",
      "description": "Request state.",
      "type": "String"
    }
  ]
}
CLI 命令
svc_subscribe Http RequestStarted

RequestProgress

描述

HTTP request progress updated.

执行要求
  • 是否需要调度器: 需要

参数
  • RequestId

    • 类型: Number

    • 描述: Request id.

  • Progress

    • 类型: Object

    • 描述: Progress object.

Schema JSON
展开查看 JSON

{
  "name": "RequestProgress",
  "description": "HTTP request progress updated.",
  "require_scheduler": true,
  "items": [
    {
      "name": "RequestId",
      "description": "Request id.",
      "type": "Number"
    },
    {
      "name": "Progress",
      "description": "Progress object.",
      "type": "Object"
    }
  ]
}
CLI 命令
svc_subscribe Http RequestProgress

RequestCompleted

描述

HTTP request completed.

执行要求
  • 是否需要调度器: 需要

参数
  • RequestId

    • 类型: Number

    • 描述: Request id.

  • Response

    • 类型: Object

    • 描述: HTTP response object.

Schema JSON
展开查看 JSON

{
  "name": "RequestCompleted",
  "description": "HTTP request completed.",
  "require_scheduler": true,
  "items": [
    {
      "name": "RequestId",
      "description": "Request id.",
      "type": "Number"
    },
    {
      "name": "Response",
      "description": "HTTP response object.",
      "type": "Object"
    }
  ]
}
CLI 命令
svc_subscribe Http RequestCompleted

RequestFailed

描述

HTTP request failed.

执行要求
  • 是否需要调度器: 需要

参数
  • RequestId

    • 类型: Number

    • 描述: Request id.

  • Response

    • 类型: Object

    • 描述: HTTP response object.

Schema JSON
展开查看 JSON

{
  "name": "RequestFailed",
  "description": "HTTP request failed.",
  "require_scheduler": true,
  "items": [
    {
      "name": "RequestId",
      "description": "Request id.",
      "type": "Number"
    },
    {
      "name": "Response",
      "description": "HTTP response object.",
      "type": "Object"
    }
  ]
}
CLI 命令
svc_subscribe Http RequestFailed

RequestCanceled

描述

HTTP request canceled.

执行要求
  • 是否需要调度器: 需要

参数
  • RequestId

    • 类型: Number

    • 描述: Request id.

  • Response

    • 类型: Object

    • 描述: HTTP response object.

Schema JSON
展开查看 JSON

{
  "name": "RequestCanceled",
  "description": "HTTP request canceled.",
  "require_scheduler": true,
  "items": [
    {
      "name": "RequestId",
      "description": "Request id.",
      "type": "Number"
    },
    {
      "name": "Response",
      "description": "HTTP response object.",
      "type": "Object"
    }
  ]
}
CLI 命令
svc_subscribe Http RequestCanceled

GeneralStateChanged

描述

HTTP service general state changed.

执行要求
  • 是否需要调度器: 需要

参数
  • State

    • 类型: String

    • 描述: General state.

Schema JSON
展开查看 JSON

{
  "name": "GeneralStateChanged",
  "description": "HTTP service general state changed.",
  "require_scheduler": true,
  "items": [
    {
      "name": "State",
      "description": "General state.",
      "type": "String"
    }
  ]
}
CLI 命令
svc_subscribe Http GeneralStateChanged