本文档涵盖了 Dify API 服务的后端开发,包括开发环境设置、架构模式以及构建和扩展 API 端点、服务和业务逻辑的实现指南。有关前端开发,请参阅 前端开发。有关模型提供商集成,请参阅 扩展模型提供商。
Dify 在 v1.3.0 中使用 uv 作为 Python 包管理器,取代了 Poetry。开发环境需要 Python 3.11+,并使用容器化的中间件堆栈。
本地开发设置
来源:api/README.md11-79 .devcontainer/post_create_command.sh1-14
开发环境使用 Docker Compose 进行中间件服务,并支持 DevContainer 开发。
开发命令
来源:api/README.md76-78 .devcontainer/post_create_command.sh7-12
后端遵循分层架构,在 API 控制器、业务服务和数据模型之间有清晰的隔离。
核心目录结构
来源:api/controllers/console/app/app.py1-363 api/services/app_service.py29-398 api/services/app_dsl_service.py112-780
身份验证和授权流程
来源:api/controllers/console/app/app.py88-114 api/services/app_service.py74-164
控制器处理 HTTP 请求,并实现具有适当身份验证和验证的 RESTful 端点。
控制器实现模式
来源:api/controllers/console/app/app.py31-175 api/controllers/console/app/workflow.py41-417
服务包含业务逻辑,并协调控制器和模型之间的关系。
服务实现模式
来源:api/services/app_service.py29-398 api/services/app_dsl_service.py112-780
模型定义数据库模式和业务实体,并带有用于 API 响应的字段序列化器。
模型关系和序列化
来源:api/fields/app_fields.py49-184 api/fields/workflow_fields.py43-74
实现新 API 端点请遵循此模式。
标准控制器实现
来源:api/controllers/console/app/app.py88-114 api/controllers/console/app/site.py40-84
服务实现示例
来源:api/services/app_service.py74-164 api/services/app_dsl_service.py116-317
迁移管理
来源: api/migrations/versions/5fda94355fce_custom_disclaimer.py20-46 .github/workflows/db-migration-test.yml54-57
测试与质量工具
来源: .github/workflows/api-tests.yml47-93 .github/workflows/style.yml48-61 dev/reformat8-18
后端采用事件驱动的架构,以实现组件之间的松耦合
事件系统实现
来源: api/events/app_event.py1-14 api/events/event_handlers/__init__.py1-11 api/events/event_handlers/delete_tool_parameters_cache_when_sync_draft_workflow.py8-34