go20/devops/agent/client/README.md
2026-03-29 18:07:57 +08:00

172 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 使用HTTP客户端 调用API Server
## 基于Curl 命令的调试方式
+ 任务执行
```sh
curl --location 'http://127.0.0.1:8848/api/devops_agent/v1/tasks' \
--header 'Content-Type: application/json' \
--data '{
"name": "task_debug",
"input_params": {}
}'
```
+ 查询任务执行结果
```sh
curl --location 'http://127.0.0.1:8848/api/devops_agent/v1/tasks/6a75c2d0-7bdb-4f35-895a-fde49f8f7e93/result'
```
+ 查询任务执行日志
```sh
curl --location 'http://127.0.0.1:8848/api/devops_agent/v1/tasks/6a75c2d0-7bdb-4f35-895a-fde49f8f7e93/log?offset=20&limit=10'
```
## 基于Go代码来发起HTTP请求
+ 任务执行
```go
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://127.0.0.1:8848/api/devops_agent/v1/tasks"
method := "POST"
payload := strings.NewReader(`{
"name": "task_debug",
"input_params": {}
}`)
// 初始化一个http client对象
client := &http.Client {
}
// 准备 HTTP请求参数
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
// 基于这个Req发起HTTP请求
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
// 读取返回的结果
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
```
+ 查询任务执行结果
```go
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://127.0.0.1:8848/api/devops_agent/v1/tasks/6a75c2d0-7bdb-4f35-895a-fde49f8f7e93/result"
method := "GET"
client := &http.Client {
}
// 准备HTTP 请求
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
// 发起HTTP请求
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
// 读取结果
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
```
+ 查询任务执行日志
```go
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://127.0.0.1:8848/api/devops_agent/v1/tasks/6a75c2d0-7bdb-4f35-895a-fde49f8f7e93/log?offset=20&limit=10"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
```
## 基于 http.Client 封装一个 SDK(Agent Client 对象)
+ 任务执行
+ 查询任务执行结果
+ 查询任务执行日志