本文展示了利用 Golang 建置 RESTful API 的步驟,包括匯入必要的套件、建立路由器、定義處理程序、註冊路由以及啟動伺服器。此外,還提供了處理錯誤情況的說明,例如傳回錯誤訊息和正確的 HTTP 狀態碼。
在Golang 中建立RESTful API 既簡單又高效,本文將帶你逐步了解如何建立API 並處理常見的錯誤場景。
import ( "encoding/json" "fmt" "log" "net/http" "github.com/gorilla/mux" )
r := mux.NewRouter()
func indexHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, World!") } func postHandler(w http.ResponseWriter, r *http.Request) { var data map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&data); err != nil { http.Error(w, "Invalid JSON", http.StatusBadRequest) return } log.Printf("Received data: %v", data) json.NewEncoder(w).Encode(map[string]interface{}{"status": "success"}) }
r.HandleFunc("/", indexHandler).Methods("GET") r.HandleFunc("/post", postHandler).Methods("POST")
http.ListenAndServe(":8080", r)
建立一個簡單的API 來儲存和擷取使用者資料:
type User struct { Name string `json:"name"` Email string `json:"email"` } func userHandler(w http.ResponseWriter, r *http.Request) { switch r.Method { case "GET": json.NewEncoder(w).Encode([]User{{Name: "John", Email: "john@example.com"}}) case "POST": var user User if err := json.NewDecoder(r.Body).Decode(&user); err != nil { http.Error(w, "Invalid JSON", http.StatusBadRequest) return } fmt.Fprint(w, "User created:", user) default: http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) } }
然後註冊路由:
r.HandleFunc("/users", userHandler)
現在,你可以使用curl
或其他工具輕鬆測試API:
curl -X GET localhost:8080/users
以上是如何使用 Golang 建立 RESTful API 並處理錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!