Cara menggunakan fungsi Golang untuk mengendalikan penghalaan permintaan web

WBOY
Lepaskan: 2024-05-02 10:18:01
asal
848 orang telah melayarinya

Di Golang, menggunakan fungsi untuk mengendalikan penghalaan permintaan web ialah cara yang boleh diperluas dan modular untuk membina API. Ia melibatkan langkah berikut: Pasang pustaka penghala HTTP. Buat penghala. Tentukan corak laluan dan fungsi pengendali untuk laluan. Tulis fungsi pengendali untuk mengendalikan permintaan dan membalas respons. Jalankan penghala menggunakan pelayan HTTP. Proses ini membolehkan pendekatan modular apabila mengendalikan permintaan masuk, dengan itu meningkatkan kebolehgunaan semula, kebolehselenggaraan dan kebolehujian.

Cara menggunakan fungsi Golang untuk mengendalikan penghalaan permintaan web

Cara menggunakan fungsi Golang untuk mengendalikan penghalaan permintaan web

Di Golang, menggunakan fungsi untuk mengendalikan penghalaan permintaan web ialah pendekatan biasa untuk membina API modular yang boleh dikembangkan. Artikel ini akan menunjukkan kepada anda cara menggunakan pustaka penghala HTTP (seperti github.com/gorilla/mux) untuk menentukan laluan dan menggunakan pengendali untuk mengendalikan permintaan masuk. github.com/gorilla/mux)来定义路由并使用处理函数来处理传入的请求。

第一步:安装 HTTP 路由器库

import "github.com/gorilla/mux"
Salin selepas log masuk

第二步:创建路由器

router := mux.NewRouter()
Salin selepas log masuk

第三步:定义路由

为路由定义路径模式,并指定用于处理请求的处理函数。例如:

router.HandleFunc("/users", getUsers).Methods("GET") // GET /users 处理函数
router.HandleFunc("/users/{id}", getUser).Methods("GET") // GET /users/{id} 处理函数
Salin selepas log masuk

第四步:编写处理函数

处理函数是用于处理传入请求并返回响应的函数。以下是处理函数示例:

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)
}
Salin selepas log masuk

第五步:运行路由器

使用 HTTP 服务器启动路由器,例如:

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

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

实战案例

创建一个简单的 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)
}
Salin selepas log masuk

通过运行此程序,你可以在 localhost:8080/userslocalhost:8080/users/{id}

🎜Langkah 1: Pasang pustaka penghala HTTP🎜🎜rrreee🎜🎜Langkah 2: Cipta penghala🎜🎜rrreee🎜🎜Langkah 3: Tentukan laluan🎜🎜🎜Tentukan laluan untuk pemprosesan yang digunakan dan tentukan corak pengendalian fungsi permintaan. Contohnya: 🎜rrreee🎜🎜Langkah 4: Tulis fungsi pemprosesan 🎜🎜🎜Fungsi pemprosesan ialah fungsi yang memproses permintaan masuk dan mengembalikan respons. Berikut ialah contoh fungsi pengendali: 🎜rrreee🎜🎜Langkah 5: Jalankan penghala 🎜🎜🎜Mulakan penghala menggunakan pelayan HTTP, contohnya: 🎜rrreee🎜🎜Kes praktikal 🎜🎜🎜Mencipta pengguna mudah : 🎜rrreee🎜Dengan menjalankan Dengan program ini, anda boleh mendapatkan dan mendapatkan semula maklumat pengguna di bawah laluan localhost:8080/users dan localhost:8080/users/{id}. 🎜

Atas ialah kandungan terperinci Cara menggunakan fungsi Golang untuk mengendalikan penghalaan permintaan web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!