Process Compose API参考:REST接口和客户端开发指南
Process Compose 是一款简单灵活的调度和编排工具,专为管理非容器化应用程序设计。本文将详细介绍其REST API接口和客户端开发指南,帮助开发者快速集成和扩展Process Compose功能。## 快速了解Process Compose API架构Process Compose提供了完整的RESTful API接口,通过HTTP协议实现对非容器化应用的远程管理。其API架构
Process Compose API参考:REST接口和客户端开发指南
Process Compose 是一款简单灵活的调度和编排工具,专为管理非容器化应用程序设计。本文将详细介绍其REST API接口和客户端开发指南,帮助开发者快速集成和扩展Process Compose功能。
快速了解Process Compose API架构
Process Compose提供了完整的RESTful API接口,通过HTTP协议实现对非容器化应用的远程管理。其API架构基于Gin框架构建,支持标准HTTP方法和WebSocket实时通信,适用于构建自定义监控面板、自动化脚本或第三方集成。
API核心功能
- 进程管理:启动、停止、重启和扩展进程
- 状态监控:实时获取进程和项目运行状态
- 日志管理:获取和截断进程日志
- 命名空间控制:管理进程命名空间
- 依赖图可视化:获取进程间依赖关系
REST API接口详解
Process Compose的REST API接口遵循RESTful设计原则,所有接口均在src/api/routes.go文件中定义,支持标准HTTP状态码和JSON响应格式。
认证机制
API访问默认需要认证令牌,通过config.TokenHeader头传递。令牌配置在config/settings.go中,长度至少20个字符:
// TokenAuthMiddleware enforces API access using an auth token if configured.
func TokenAuthMiddleware(token string) gin.HandlerFunc {
return func(c *gin.Context) {
reqToken := c.GetHeader(config.TokenHeader)
if reqToken != token {
c.AbortWithStatus(http.StatusUnauthorized)
return
}
c.Next()
}
}
核心API端点
| 方法 | 端点 | 功能描述 |
|---|---|---|
| GET | /processes |
获取所有进程列表 |
| GET | /process/:name |
获取指定进程详情 |
| POST | /process/start/:name |
启动指定进程 |
| PATCH | /process/stop/:name |
停止指定进程 |
| POST | /process/restart/:name |
重启指定进程 |
| PATCH | /process/scale/:name/:scale |
扩展进程实例数量 |
| GET | /process/logs/:name/:endOffset/:limit |
获取进程日志 |
| DELETE | /process/logs/:name |
截断进程日志 |
| GET | /project/state |
获取项目状态 |
| POST | /project/configuration |
重新加载项目配置 |
WebSocket实时接口
Process Compose提供WebSocket接口用于实时监控:
- 日志流:
/process/logs/ws- 实时获取进程日志 - 状态流:
/process/states/ws- 实时获取进程状态更新
客户端开发指南
Process Compose提供了Go语言客户端库,位于src/client/目录,支持Unix域套接字和TCP两种连接方式。
客户端初始化
// 创建Unix域套接字客户端
client := NewUdsClient(sockPath, logLength)
// 创建TCP客户端
client := NewTcpClient(host, port, logLength)
核心客户端方法
客户端API封装了所有REST接口功能,主要方法包括:
// 进程管理
client.StartProcess(name string) error
client.StopProcess(name string) error
client.RestartProcess(name string) error
client.ScaleProcess(name string, scale int) error
// 状态监控
client.GetProcessState(name string) (*types.ProcessState, error)
client.GetProjectState(withMemory bool) (*types.ProjectState, error)
// 日志管理
client.GetProcessLog(name string, offsetFromEnd, limit int) ([]string, error)
client.TruncateProcessLogs(name string) error
client.GetLogsAndSubscribe(name string, observer pclog.LogObserver) error
实时日志订阅示例
// 创建日志观察者
observer := &MyLogObserver{}
// 订阅进程日志
err := client.GetLogsAndSubscribe("my-process", observer)
if err != nil {
log.Fatal(err)
}
// 实现日志观察者接口
type MyLogObserver struct{}
func (o *MyLogObserver) WriteString(message string) (int, error) {
fmt.Println("Received log:", message)
return len(message), nil
}
实际应用场景
1. 构建自定义监控面板
通过API获取进程状态和日志数据,结合前端框架构建自定义监控界面:
图:Process Compose终端用户界面,可通过API实现类似功能
2. 自动化部署脚本
使用API实现自动化部署流程:
# 启动应用进程
curl -X POST http://localhost:8080/process/start/my-app \
-H "X-Process-Compose-Token: your-auth-token"
# 检查进程状态
curl http://localhost:8080/process/my-app \
-H "X-Process-Compose-Token: your-auth-token"
3. 集成CI/CD流水线
在CI/CD流程中集成Process Compose API,实现测试环境的自动部署和清理:
// Go语言CI脚本示例
client := NewTcpClient("localhost", 8080, 1000)
defer client.ShutDownProject()
// 启动测试环境
err := client.StartNamespace("test-env")
if err != nil {
log.Fatal(err)
}
// 运行测试...
// 停止测试环境
err = client.StopNamespace("test-env")
API文档与工具
Process Compose集成了Swagger文档,启动服务后可通过/swagger/index.html访问完整API文档。所有API定义和类型声明可在以下文件中找到:
- API路由定义:
src/api/routes.go - 客户端实现:
src/client/client.go - 数据类型定义:
src/types/process.go和src/types/project.go
总结
Process Compose提供了强大而灵活的API接口,使开发者能够轻松构建自定义工具和集成方案。通过REST API和WebSocket,可实现对非容器化应用的全面管理和监控。客户端库进一步简化了集成过程,支持Unix域套接字和TCP两种连接方式,满足不同场景需求。
无论是构建监控面板、自动化脚本还是集成CI/CD流水线,Process Compose API都能提供可靠的技术支持,帮助团队更高效地管理和编排非容器化应用程序。
更多推荐



所有评论(0)