首頁 > 後端開發 > Golang > 主體

如何使用 Golang 建立 RESTful API 並處理錯誤?

WBOY
發布: 2024-05-31 19:48:00
原創
1010 人瀏覽過

本文展示了利用 Golang 建置 RESTful API 的步驟,包括匯入必要的套件、建立路由器、定義處理程序、註冊路由以及啟動伺服器。此外,還提供了處理錯誤情況的說明,例如傳回錯誤訊息和正確的 HTTP 狀態碼。

如何使用 Golang 构建 RESTful API 并处理错误?

使用Golang 建立RESTful API 並處理錯誤

在Golang 中建立RESTful API 既簡單又高效,本文將帶你逐步了解如何建立API 並處理常見的錯誤場景。

1. 匯入必要的套件

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)
登入後複製

2. 建立路由器

r := mux.NewRouter()
登入後複製

3. 定義處理程序

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"})
}
登入後複製

4. 註冊路由

r.HandleFunc("/", indexHandler).Methods("GET")
r.HandleFunc("/post", postHandler).Methods("POST")
登入後複製

5. 啟動伺服器

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板