Web yönlendirme, belirtilen URL yolunda çalışan işleyici işlevlerine HTTP istekleri atama tekniğidir. Yönlendirme genellikle tek sayfalı uygulamalar (SPA) ve API'ler oluşturmak için kullanılır. Yönlendiricide kod, bir kullanıcının isteğine eşlik eden eylemlerin sırasını tanımlar.

Go standart kitaplığı, yönlendirme dahil, web uygulamaları oluşturmak için ihtiyaç duyacağınız işlevlerin çoğuna sahiptir. kullanabilirsiniz ServeMux yazın net/http temel rota işleme paketi. Daha karmaşık rota yönetimine ihtiyacınız varsa, aralarından seçim yapabileceğiniz çok sayıda yönlendirme paketi vardır.

Go'da Yönlendirmeye Başlarken

Go'nun ekosistemi, gereksiz olanı soyutlayan ve web uygulamaları ve hizmetleri oluşturmayı kolaylaştıran yönlendirme paketlerine ev sahipliği yapar.

Birçok Go web çerçevesi, bu yönlendirme paketlerinden bazılarını uygular.

İşte için basit bir yapı modeli JSON yanıt, bu eğitimde müşteriye geri döneceksiniz.

tip Bilgi yapı {
İleti sicim`json:"mesaj"`
Tanım sicim`json:"açıklama"`
}

Çoğu Go yönlendiricisi hala net/http kullanıyor

instagram viewer
Yanıt Yazarı ve Rica etmek işleyici işlevlerinde parametre olarak yöntemler.

işlevmerhaba(yazar http. ResponseWriter, istek * http. Rica etmek) {
// işleyici işlevi burada iş mantığı
}

Ayrıca, bir sunucu başlatmanız gerekir. DinleAndServe çoğu pakette sunucuyu başlatma yöntemi.

hata := http. ListenAndServe(":8000", yönlendirici)

eğer hata != sıfır {
dönüş
}

İşte Go ekosistemindeki popüler yönlendirme paketlerinden bazıları.

1. Goril Mux Yönlendirici

Gorilla Mux paketi, HTTP istekleri için hem bir istek yönlendiricisi hem de bir istek göndericisi uygular. bu gibi http. ServeMux yöntem, ancak ek işlevsellik ile.

Gorilla Mux yönlendirici, http. işleyici arayüzü ve yöntemleri ile uyumludur. ServeMux yöntem. Paket ayrıca birden çok URL şeması uygular ve benzer yolları tanımlamak için yönlendiricileri alt yönlendiriciler (iç içe yollar) olarak kullanabilirsiniz.

bu goril mux paket Gorilla web araç setinin bir parçasıdır. Araç seti, birçok sorunu çözmek için web ile ilgili paketleri içerir. Kullanıcıların Oturumlar ile oturumlarının açık tutulması Çerezleri kullanarak veri depolamaya.

Gorilla Mux paketini kurmak için çalışma alanınızın terminalinde bu komutu çalıştırın.

Git -u github.com/gorilla/mux olsun

İşte nasıl kurabileceğiniz ALMAK Gorilla Mux paketiyle bir JSON yanıtını kodlayan bir işleyici işlevine yönelik istek yolu.

içe aktarmak (
"kodlama/json"
"github.com/gorilla/mux"
"kayıt"
"net/http"
)

işlevmerhaba(yazar http. ResponseWriter, istek * http. Rica etmek) {
yanıt := Bilgi {
Mesaj: "Başarı",
Açıklama: "Müşteriye başarıyla yazdınız",
}

hata := json. NewEncoder (yazar).Encode (yanıt)

eğer hata != sıfır {
kayıt. Fatalln (hata)
}
}

işlevana() {
yönlendirici := çok. Yeni Yönlendirici()
yönlendirici. HandleFunc("/merhaba", merhaba).Yöntemler("GET")
hata := http. ListenAndServe(":8000", yönlendirici)

eğer hata != sıfır {
dönüş
}
}

bu merhaba işleyici işlevi, yapıyı kullanarak JSON'a kodlar. kodlamak yöntemi YeniKodlayıcı yapı.

bu ana işlevi, yeni bir Gorilla Mux yönlendirici örneği atar. yönlendirici değişken. Daha sonra çağırır HandleFunc rotayı işleyici işlevine eşleme yöntemi. kullanabilirsiniz yöntemler bir istek türü belirtme yöntemi.

2. Chi Yönlendirici

bu Ki Yönlendirici Go'da HTTP tabanlı web hizmetleri oluşturmak için hafif, hızlı, şekillendirilebilir bir yönlendiricidir. Chi yönlendirici ile uyumludur http pakettir ve yönlendirici için harici bağımlılık yoktur.

Birçok yönlendiriciden farklı olarak Chi, içerik kontrolü sağlar. bağlam zamanında istek işleme için paket.

Bu komutla Chi yönlendiriciyi Go modüllerinize kurun.

Git github.com/'u edininGit-çi/çi

Gorilla Mux yönlendirici ve Chi yönlendirici ile yönlendirme çok benzer. Benzerini nasıl kurabileceğiniz aşağıda açıklanmıştır ALMAK struct'ı yanıt olarak JSON'a kodlayan istek.

içe aktarmak (
"kodlama/json"
"github.com/Git-chi/chi/v5"
"kayıt"
"net/http"
)

işlevana() {
yönlendirici := chi. Yeni Yönlendirici()
yönlendirici. Get("/merhaba", merhaba)
hata := http. ListenAndServe(":8000", yönlendirici)

eğer hata != sıfır {
dönüş
}
}

işlevmerhaba(yazar http. ResponseWriter, istek * http. Rica etmek) {
yanıt := Bilgi {
Mesaj: "Başarı",
Açıklama: "Müşteriye başarıyla yazdınız",
}

hata := json. NewEncoder (yazar).Encode (yanıt)

eğer hata != sıfır {
kayıt. Fatalln (hata)
}
}

bu merhaba işleyici işlevi, işleyici işlevidir. ALMAK rica etmek.

İçinde ana işlev, yönlendirici değişken bir Chi yönlendirici örneğidir. Yöntem adıyla bir istek yöntemi belirtebilirsiniz; bu durumda, Almak parametre olarak rota ve işleyici işlev tanımlayıcısını alır.

3. HttpRouter Paketi

bu HttpYönlendirici package, yüksek performanslı, hafif bir istek çoklayıcıdır. olduğundan daha fazla işlevsellik sağlar. ServeMux http paketinin uygulanması.

HttpRouter paketinin küçük bir bellek alanı, yüksek performansı ve iyi ölçeklenebilirliği vardır. Go ekosistemindeki en eski ve en çok kullanılan yönlendiricilerden biridir ve birçok popüler Go çerçeveleri, içermek cin kitaplığı.

Bu komutu çalışma dizininizin terminalinde çalıştırmak HttpRouter paketini kuracaktır.

Git github.com/julienschmidt/httprouter'ı edinin

HttpRouter ile yönlendirme, Chi ve Gorilla Mux yönlendiricilerinden biraz farklıdır.

HttpRouter paketiyle basit bir GET isteği nasıl oluşturabileceğiniz aşağıda açıklanmıştır.

içe aktarmak (
"kodlama/json"
"github.com/julienschmidt/httprouter"
"kayıt"
"net/http"
)

işlevana() {
yönlendirici := httprouter. Yeni()
yönlendirici. GET("/merhaba", merhaba)
hata := http. ListenAndServe(":8000", yönlendirici)

eğer hata != sıfır {
dönüş
}
}

işlevmerhaba(yazar http. ResponseWriter, istek * http. İstek, _ httprouter. Parametreler) {
yanıt := Bilgi {
Mesaj: "Başarı",
Açıklama: "API uç noktasına başarıyla ulaştınız",
}

hata := json. NewEncoder (yazar).Encode (yanıt)

eğer hata != sıfır {
kayıt. Fatalln (hata)
}
}

HttpRouter paketi için işleyici işlevleri şu özelliklere sahip olmalıdır: Parametreler HTTP yönlendiricisinin yöntemi.

bu yönlendirici değişken, HttpRouter'ın bir örneğidir. ile bir GET isteği oluşturabilirsiniz. ALMAK rotayı ve işleyici işlevi tanımlayıcısını alan yöntem.

4. Pat Yönlendirici

Pat Go'nun net/http paketiyle çalışan Sinatra tarzı bir HTTP istek çoklayıcıdır. Pat yönlendiricinin yönlendirme dışında herhangi bir işlevi yoktur.

Pat Router'ı kurmak için bu komutu çalışma dizininizde çalıştırın.

Git github.com/bmizerany/pat'ı edinin

Pat yönlendirici, aşağıdakine benzer işlevleri uygular: ServeMux yöntem.

ile istek yönlendirmeyi şu şekilde halledebilirsiniz: pat paket.

içe aktarmak (
"kodlama/json"
"github.com/bmizerany/pat"
"kayıt"
"net/http"
)

işlevmerhaba(yazar http. ResponseWriter, istek * http. Rica etmek) {
yanıt := Bilgi {
Mesaj: "Başarı",
Açıklama: "Son noktaya başarıyla ulaştınız",
}

hata := json. NewEncoder (yazar).Encode (yanıt)

eğer hata != sıfır {
kayıt. Fatalln("hata")
}
}

işlevana() {
yönlendirici := pat. Yeni() // yönlendirici örneği
yönlendirici. Get("/merhaba", http. HandlerFunc (merhaba))
http. Kolu ("/", yönlendirici)
hata := http. ListenAndServe(":12345", sıfır)

eğer hata != sıfır {
kayıt. Fatal("DinleAndServe: ", hata)
}
}

bu Yeni yöntem bir yönlendirici örneği döndürür. İşleyici işlevini İşleyiciFunc yöntem. Daha sonra Üstesinden gelmek Bir sunucuyu başlatmadan önce bir kök yolu belirtme ve yönlendirici örneğini bağlama yöntemi.

Bir Yönlendirici Oluşturmak O Kadar Zor Değil

Bu makaledeki tüm yönlendiriciler, net ve http paketlerinden işlevsellik uygular. İhtiyaçlarınıza uygun ekstra işlevselliğe sahip bir yönlendiriciyi nasıl çoğaltacağınızı öğrenmek için ServeMux yönteminin belgelerine göz atabilirsiniz.

Gin ve Fiber gibi çerçeveler, net paketten veya onu uygulayan harici paketlerden yönlendirme işlevselliğini içerir.