本文档涵盖了前端 API 客户端的实现,该客户端提供了 React 前端与 OpenHands 后端服务之间的结构化通信。API 客户端是所有基于 HTTP 的交互的主要接口,包括对话管理、设置配置、Git 集成和身份验证流程。
有关实时 WebSocket 通信的信息,请参阅 WebSocket 通信。有关后端 API 端点实现的信息,请参阅 服务器 API 和通信。
API 客户端在 frontend/src/api/open-hands.ts20 中实现为一个静态类 OpenHands,该类集中了与后端 FastAPI 服务器的所有 HTTP 通信。它提供了与后端端点交互的类型安全方法,并管理特定于对话的身份验证标头。
来源:frontend/src/api/open-hands.ts1-399
API 客户端遵循单例模式,其静态方法按功能域进行组织。该类维护对话状态并为所有后端通信提供类型化接口。
OpenHands 类提供了以下关键功能
| 类别 | 方法 | 目的 |
|---|---|---|
| 对话管理 | createConversation、startConversation、stopConversation、deleteUserConversation | 对话的 CRUD 操作 |
| 身份验证 | authenticate、logout、getGitHubAccessToken | 用户认证和会话管理 |
| 配置 | getModels、getAgents、getConfig、getSettings、saveSettings | 系统和用户配置检索 |
| Git 集成 | getGitUser、searchGitRepositories、getRepositoryBranches、getGitChanges | 版本控制操作 |
| 工作区操作 | getWorkspaceZip、getWebHosts、getVSCodeUrl | 开发环境访问 |
| 账单 | getBalance、createCheckoutSession、createBillingSessionResponse | 付款和订阅管理 |
来源:frontend/src/api/open-hands.ts20-39 frontend/src/api/open-hands.ts57-80 frontend/src/api/open-hands.ts191-257
API 客户端实现基于会话的身份验证,并使用特定于对话的 API 密钥来安全地与后端服务进行通信。
该类维护对当前活动对话的引用,其中包括会话身份验证详细信息
身份验证流程使用存储在对话对象中的会话 API 密钥
getConversationHeaders() 提取会话 API 密钥并创建 Axios 标头getConversationUrl() 处理对话特定的 URL 路由setCurrentConversation() 管理对话状态来源:frontend/src/api/open-hands.ts21-51 frontend/src/api/open-hands.ts89-96
对话 API 方法处理 AI 代理交互的完整生命周期
关键对话方法
createConversation() 支持存储库选择、Git 提供程序配置和任务初始化startConversation() 启动代理执行stopConversation() 停止代理执行getUserConversations() 检索对话历史记录来源:frontend/src/api/open-hands.ts191-257
API 客户端提供系统配置和可用选项的访问权限
配置方法包括
getModels() 检索可用的 LLM 模型getAgents() 检索可用的 AI 代理getSecurityAnalyzers() 检索安全分析选项来源:frontend/src/api/open-hands.ts57-87 frontend/src/api/open-hands.ts262-276
Git 集成方法提供了全面的版本控制功能
Git 集成功能
getGitUser() 检索已认证的用户信息searchGitRepositories() 提供带分页的存储库搜索来源: frontend/src/api/open-hands.ts302-395
工作区方法提供对开发环境资源的访问
工作区操作包括
getWorkspaceZip() 将工作区下载为blobgetWebHosts() 检索可用的 Web 开发服务器getVSCodeUrl() 提供 VSCode 集成 URLgetRuntimeId() 检索运行时环境标识符来源: frontend/src/api/open-hands.ts130-189
API客户端使用从 [frontend/src/api/open-hands-axios] 导入的配置好的 Axios 实例来处理所有 HTTP 请求。该实例处理
该客户端集成了来自 [frontend/src/api/open-hands.types] 的 TypeScript 类型定义,以确保所有 API 交互的类型安全。
来源: frontend/src/api/open-hands.ts15 frontend/src/api/open-hands.ts1-14