日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52003
  • 待審:43
  • 小程序:12
  • 文章:1047590
  • 會員:762

在 golang 中,使用函數處理 web 請求路由是一種可擴展、模塊化的 api 構建方法。它涉及以下步驟:安裝 http 路由器庫。創建一個路由器。為路由定義路徑模式和處理函數。編寫處理函數來處理請求和返回響應。使用 http 服務器運行路由器。這個過程允許在處理傳入請求時使用模塊化的方法,從而提高了可重用性、可維護性和可測試性。

如何使用 Golang 函數處理 Web 請求路由

在 Golang 中,使用函數處理 Web 請求路由是一種構建可擴展、模塊化 API 的常用方法。本文將向你展示如何使用 HTTP 路由器庫(例如 <a style="color:#f60; text-decoration:underline;" href="https://www.php.cn/zt/15841.html" target="_blank">git</a>hub.com/gorilla/mux)來定義路由并使用處理函數來處理傳入的請求。

第一步:安裝 HTTP 路由器庫

import "github.com/gorilla/mux"

登錄后復制

第二步:創建路由器

router := mux.NewRouter()

登錄后復制

第三步:定義路由

為路由定義路徑模式,并指定用于處理請求的處理函數。例如:

router.HandleFunc("/users", getUsers).Methods("GET") // GET /users 處理函數
router.HandleFunc("/users/{id}", getUser).Methods("GET") // GET /users/{id} 處理函數

登錄后復制

第四步:編寫處理函數

處理函數是用于處理傳入請求并返回響應的函數。以下是處理函數示例:

func getUsers(w http.ResponseWriter, r *http.Request) {
  // 獲取所有用戶數據
  users := []User{
    {ID: 1, Name: "John"},
    {ID: 2, Name: "Jane"},
  }

  // 以 JSON 格式編碼響應
  json, err := json.Marshal(users)
  if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
  }

  // 設置響應標頭和狀態代碼
  w.Header().Set("Content-Type", "application/json")
  w.WriteHeader(http.StatusOK)

  // 寫入響應主體
  w.Write(json)
}

登錄后復制

第五步:運行路由器

使用 HTTP 服務器啟動路由器,例如:

srv := &http.Server{
  Handler: router,
  Addr:    ":8080",
}

if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  log.Fatal(err)
}

登錄后復制

實戰案例

創建一個簡單的 API 來管理用戶:

package main

import (
  "github.com/gorilla/mux"
  "net/http"
)

type User struct {
  ID   int
  Name string
}

var users = []User{
  {1, "John"},
  {2, "Jane"},
}

func main() {
  router := mux.NewRouter()
  router.HandleFunc("/users", Get).Methods("GET")
  router.HandleFunc("/users/{id}", GetByID).Methods("GET")
  srv := &http.Server{
    Handler: router,
    Addr:    ":8080",
  }
  srv.ListenAndServe()
}

func Get(w http.ResponseWriter, r *http.Request) { json.Encode(w, users) }
func GetByID(w http.ResponseWriter, r *http.Request) {
  id := mux.Vars(r)["id"] // 從 URL 中提取參數
  for _, user := range users {
    if user.ID == id {
      json.Encode(w, user)
      return
    }
  }
  http.Error(w, "Not found", http.StatusNotFound)
}

登錄后復制

通過運行此程序,你可以在 localhost:8080/userslocalhost:8080/users/{id} 路徑下獲得和檢索用戶信息。

分享到:
標簽:git Golang web請求 路由
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52003

    網站

  • 12

    小程序

  • 1047590

    文章

  • 762

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定