Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Kaedah `ServeHTTP` Go Mendayakan Pengendali HTTP Tersuai?

Bagaimanakah Kaedah `ServeHTTP` Go Mendayakan Pengendali HTTP Tersuai?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 11:48:11609semak imbas

How Does Go's `ServeHTTP` Method Enable Custom HTTP Handlers?

Memahami ServeHTTP: Bagaimana Kod Ini Berfungsi?

Dalam Go, melaksanakan kaedah ServeHTTP untuk jenis tersuai menjadikan jenis itu serasi dengan Antara muka pengendali, bahagian penting dalam mencipta pengendali HTTP. Ini membolehkan jenis tersuai untuk mengendalikan permintaan HTTP masuk.

Mari terokai kod yang dimaksudkan:

package main

import (
    "fmt"
    "net/http"
)

type foo int

func (m foo) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Some text")
}

func main() {
    var bar foo
    http.ListenAndServe(":8080", bar)
}

Bagaimanakah ia berfungsi?

  1. Apabila http.ListenAndServe digunakan dengan bar sebagai hujah, ia mencipta pelayan HTTP dan mendaftarkan tersuai pengendali, kaedah ServeHTTP foo, untuk mengendalikan permintaan masuk.
  2. Apabila permintaan diterima, pelayan menggunakan kaedah ServeHTTP pengendali berdaftar, iaitu kaedah ServeHTTP foo dalam kes ini.
  3. Di dalam kaedah ServeHTTP, permintaan dan respons HTTP dikendalikan. Dalam contoh ini, ia menulis "Sesetengah teks" kepada penulis respons.

Bagaimanakah fungsi ServeHTTP diakses?

Fungsi ServeHTTP diakses melalui pelaksanaan antara muka Pengendali dalam jenis tersuai foo. Dengan melaksanakan ServeHTTP, foo menandakan kesediaannya untuk mengendalikan permintaan HTTP dan pakej HTTP mengiktirafnya sebagai pengendali yang sah.

HandlerFunc

Jenis HandlerFunc dan fungsi yang berkaitan dengannya sintaks ialah pembantu yang memudahkan untuk menentukan fungsi tanpa nama sebagai pengendali HTTP tanpa membuat jenis tersuai seperti dalam foo. Kaedah HandlerFunc ServeHTTP hanya menggunakan fungsi tanpa nama dengan hujah yang sesuai.

Pada dasarnya, kod tersebut menunjukkan cara melaksanakan kaedah ServeHTTP membenarkan jenis tersuai untuk mengendalikan permintaan HTTP, di mana pelayan yang bertanggungjawab untuk mendengar pada port rangkaian menghantar permintaan masuk kepada pengendali ini.

Atas ialah kandungan terperinci Bagaimanakah Kaedah `ServeHTTP` Go Mendayakan Pengendali HTTP Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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