路由
服务器定义了一系列get 和 post 方法,
这些方法可以通过在 server.py 中搜索 @routes 找到。当你在网页客户端提交工作流时,
它会被发送到 /prompt 端点,该端点会验证提示并将其添加到执行队列中,
返回 prompt_id 和 number(队列中的位置),如果验证失败则返回 error 和 node_errors。
提示队列定义在 execution.py 中,该文件还定义了 PromptExecutor 类。
内置路由
server.py 定义了以下路由:
核心 API 路由
Assets API
Assets API (/api/assets) 提供了一个统一的、基于标签的文件管理系统(图片、模型、输出),支持内容寻址存储和元数据。这是上传、组织和检索文件的推荐方式。
列出资产
GET /api/assets 返回一个分页的资产列表,支持可选的过滤:
响应:
上传资产
POST /api/assets 上传新资产(multipart/form-data):
获取资产详情
GET /api/assets/{id} 返回特定资产的完整详情。
下载资产内容
GET /api/assets/{id}/content 下载资产文件,带有适当的 Content-Type 和 Content-Disposition 头。
Assets API 使用 Blake3 哈希的内容寻址存储,这意味着相同的文件会自动去重。标签提供了灵活的组织方式,无需严格的文件夹层次结构。
WebSocket 通信
/ws 端点提供客户端与服务器之间的实时双向通信。用于:
- 接收执行进度更新
- 实时获取节点执行状态
- 接收错误消息和调试信息
- 队列状态变化时的实时更新
status- 整体系统状态更新execution_start- 当提示执行开始时execution_cached- 当使用缓存结果时executing- 节点执行期间的更新progress- 长时间运行操作的进度更新executed- 当节点完成执行时
自定义路由
如果你想在执行过程中从客户端向服务器发送消息,你需要在服务器中添加一个自定义路由。 对于复杂的情况,你需要深入研究 aiohttp 框架文档,但大多数情况可以按以下方式处理:FormData 对象来使用这个新路由,代码如下所示,
这将导致上面代码中的 the_data 包含 message 和 node_id 键: