go cobra在线起api
时间: 2023-05-23 14:04:06 浏览: 75
可以使用 Go Cobra 编写一个 CLI 工具,同时提供一个 API 接口来使用。在 Cobra 中,可以添加一个子命令来启动一个 HTTP 服务器来提供 API 服务。在该子命令中,可以绑定 HTTP 端口并处理各种 API 请求。以下是一个例子:
```
package main
import (
"fmt"
"net/http"
"github.com/spf13/cobra"
)
func startAPI(cmd *cobra.Command, args []string) {
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
})
port, _ := cmd.Flags().GetString("port")
fmt.Printf("Starting API server on port %s\n", port)
http.ListenAndServe(":"+port, nil)
}
func main() {
rootCmd := &cobra.Command{
Use: "my-api",
Short: "Start a simple API",
}
rootCmd.PersistentFlags().String("port", "8080", "Port to listen on")
apiCmd := &cobra.Command{
Use: "api",
Short: "Start the API server",
Run: startAPI,
}
rootCmd.AddCommand(apiCmd)
if err := rootCmd.Execute(); err != nil {
panic(err)
}
}
```
该程序使用 Cobra 创建一个名为 `my-api` 的 CLI 工具,并添加一个名为 `api` 的子命令来启动 API 服务器。调用 `http.HandleFunc` 注册一个简单的路由,它响应 `/hello` 请求并返回 `"Hello, World!"`。使用 `http.ListenAndServe` 注册 HTTP 服务器并在指定端口上侦听。
最后,程序可以使用 `go build` 编译并运行可执行文件来启动 API 服务器。例如,可以使用以下命令启动服务器:
```
./my-api api --port 8080
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)