1.7 KiB
1.7 KiB
Monaco Go Completion Backend
Gin + gopls(JSON-RPC/LSP over stdio) 实现的 Go 代码补全后端。
运行
go mod tidy
go run ./cmd/server
默认监听 http://localhost:8080。
环境变量
PORT:HTTP 端口,默认8080GOPLS_PATH:gopls可执行文件路径,默认goplsWORKSPACE_DIR:gopls 工作目录,默认当前目录CORS_ALLOW_ORIGIN:CORS 允许来源,默认*
API
健康检查
GET /health
Go 补全
POST /api/v1/completions/goContent-Type: application/json
Go 补全(WebSocket)
GET /ws/completions/go- 客户端发送:
{
"id": "1",
"uri": "file:///main.go",
"text": "package main\n\nimport \"fmt\"\n\nfunc main() {\n fmt.Pri\n}",
"line": 5,
"character": 11
}
- 服务端返回:
{
"id": "1",
"items": [{ "label": "Println" }],
"isIncomplete": false
}
请求体:
{
"uri": "file:///C:/Users/meowr/Desktop/bishe/monica_editor_with_code_completion/backend/playground.go",
"text": "package main\n\nimport \"fmt\"\n\nfunc main() {\n fmt.Pri\n}",
"line": 5,
"character": 11
}
说明:
uri建议使用绝对file://URI(与WORKSPACE_DIR在同一工作区最稳定)。- 也支持
file:///main.go这类相对根路径 URI,后端会自动映射到WORKSPACE_DIR下。 line/character为 0-based。- 每次请求都要传前端当前全文
text。
响应体:
{
"items": [
{
"label": "Println",
"kind": 3,
"detail": "func(a ...any) (n int, err error)",
"documentation": "Println formats using the default formats..."
}
],
"isIncomplete": false
}