路由
服务器定义了一系列get 和 post 方法,
这些方法可以通过在 server.py 中搜索 @routes 找到。当你在网页客户端提交工作流时,
它会被发送到 /prompt 端点,该端点会验证提示并将其添加到执行队列中,
返回 prompt_id 和 number(队列中的位置),如果验证失败则返回 error 和 node_errors。
提示队列定义在 execution.py 中,该文件还定义了 PromptExecutor 类。
内置路由
server.py 定义了以下路由:
核心 API 路由
| 路径 | get/post/ws | 用途 | 
|---|---|---|
| / | get | 加载 Comfy 网页 | 
| /ws | websocket | 用于与服务器进行实时通信的 WebSocket 端点 | 
| /embeddings | get | 获取可用的嵌入模型名称列表 | 
| /extensions | get | 获取注册了 WEB_DIRECTORY的扩展列表 | 
| /features | get | 获取服务器功能和能力 | 
| /models | get | 获取可用模型类型列表 | 
| /models/{folder} | get | 获取特定文件夹中的模型 | 
| /workflow_templates | get | 获取自定义节点模块及其关联模板工作流的映射 | 
| /upload/image | post | 上传图片 | 
| /upload/mask | post | 上传蒙版 | 
| /view | get | 查看图片。更多选项请参见 server.py中的@routes.get("/view") | 
| /view_metadata/ | get | 获取模型的元数据 | 
| /system_stats | get | 获取系统信息(Python 版本、设备、显存等) | 
| /prompt | get | 获取当前队列状态和执行信息 | 
| /prompt | post | 提交提示到队列 | 
| /object_info | get | 获取所有节点类型的详细信息 | 
| /object_info/{node_class} | get | 获取特定节点类型的详细信息 | 
| /history | get | 获取队列历史记录 | 
| /history/{prompt_id} | get | 获取特定提示的队列历史记录 | 
| /history | post | 清除历史记录或删除历史记录项 | 
| /queue | get | 获取执行队列的当前状态 | 
| /queue | post | 管理队列操作(清除待处理/运行中的任务) | 
| /interrupt | post | 停止当前工作流执行 | 
| /free | post | 通过卸载指定模型释放内存 | 
| /userdata | get | 列出指定目录中的用户数据文件 | 
| /v2/userdata | get | 增强版本,以结构化格式列出文件和目录 | 
| /userdata/{file} | get | 获取特定的用户数据文件 | 
| /userdata/{file} | post | 上传或更新用户数据文件 | 
| /userdata/{file} | delete | 删除特定的用户数据文件 | 
| /userdata/{file}/move/{dest} | post | 移动或重命名用户数据文件 | 
| /users | get | 获取用户信息 | 
| /users | post | 创建新用户(仅限多用户模式) | 
WebSocket 通信
/ws 端点提供客户端与服务器之间的实时双向通信。用于:
- 接收执行进度更新
- 实时获取节点执行状态
- 接收错误消息和调试信息
- 队列状态变化时的实时更新
- status- 整体系统状态更新
- execution_start- 当提示执行开始时
- execution_cached- 当使用缓存结果时
- executing- 节点执行期间的更新
- progress- 长时间运行操作的进度更新
- executed- 当节点完成执行时
自定义路由
如果你想在执行过程中从客户端向服务器发送消息,你需要在服务器中添加一个自定义路由。 对于复杂的情况,你需要深入研究 aiohttp 框架文档,但大多数情况可以按以下方式处理:除非你确切知道自己在做什么,否则不要尝试在类中定义 
my_function。
@routes.post 装饰器做了很多工作!相反,应该像上面那样定义函数,
然后调用一个类方法。如果你不需要修改任何内容,也可以定义 
@routes.get。FormData 对象来使用这个新路由,代码如下所示,
这将导致上面代码中的 the_data 包含 message 和 node_id 键: