用golang实现一个webhook
时间: 2024-02-17 18:02:57 浏览: 24
好的,以下是一个简单的用 Golang 实现的 Webhook 代码示例:
```go
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
type Data struct {
EventType string `json:"event_type"`
Payload struct {
Message string `json:"message"`
} `json:"payload"`
}
func main() {
http.HandleFunc("/webhook", func(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
var data Data
if err := json.NewDecoder(r.Body).Decode(&data); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
switch data.EventType {
case "message":
fmt.Println(data.Payload.Message)
default:
fmt.Println("Unknown event type")
}
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
```
这个示例代码实现了一个简单的 Webhook,监听 /webhook 路径,接收 POST 请求。接收到请求后,将请求体中的 JSON 数据解析出来,并根据其中的事件类型进行处理。这里只处理了 message 类型的事件,其他类型的事件会输出 "Unknown event type"。
你可以在这个基础上进行修改和扩展,实现你自己的 Webhook 逻辑。