Go, web uygulamaları oluşturmak için güçlü ve esnek bir dildir. bu açık paket, Go'nun ekosisteminde önemli bir rol oynar.
Çoğu sunucu tarafı programlama dili gibi, Go da HTTP protokolüyle etkileşime geçmek için bir HTTP paketi ile birlikte gelir. İlgili Go paketi, http paketin bir alt paketidir. açık paket.
net/http Paketi Nedir?
bu net/http package, Go'daki standart kitaplıklardan biridir. HTTP istemcileri, sunucular ve diğer HTTP tabanlı işlemler oluşturmak için eksiksiz bir dizi işlev ve tür sağlar. Bunlar şunları içerir:
- HTTP istekleri yapmak için işlevler.
- İstekleri ve yanıtları işleme.
- HTTP isteklerini sunmak.
- Başlıklar ve tanımlama bilgileri gibi ilgili nesneler.
bu net/http paket ayrıca TLS/SSL şifrelemesini, HTTP/2'yi ve paketi Go geliştiricileri için önemli bir araç haline getiren diğer gelişmiş özellikleri destekler.
Gorilla web araç setinden Echo web çerçevesine kadar pek çok popüler Go kitaplığı ve çerçevesi, net/http paket.
Basit Bir HTTP Sunucusunu Başlatma
Sunucuları başlatmak, HTTP protokolüyle çalışmak için anlamanız gereken temel işlemlerden biridir.
İşte bir program Go'da basit bir sunucu çalıştırın:
paket ana
içe aktarmak (
"fmt"
"ağ/http"
)// işleyici, Go'daki tipik bir HTTP istek-yanıt işleyicisidir; detaylar sonra
işlevişleyici(http ile. ResponseWriter, r *http. Rica etmek) {
// Fprintf, dizeyi bir yazar olarak biçimlendirir
fmt. Fprintf (w, "Selam Dünya!")
}
işlevana() {
http. HandFunc("/", işleyici)
http. dinleve sun(":8080", sıfır)
}
bu işleyici için tipik bir istek-yanıt işleyicisidir. http paket. Bu işlev "Merhaba Dünya!" dizesini yazar. HTTP yanıt yazarına.
Kodu çalıştırırken ve ziyaret ederken http://localhost: 8080/ bir web tarayıcısında "Merhaba Dünya!" tarayıcınızda görüntülenen dize.
İstekleri ve Yanıtları İşleme
ile gelen istekleri yönetebilirsiniz. KulpFunc yöntemi http paket. bu KulpFunc yöntem bir rota dizesi ve bir işleyici işlevi alır.
bu http. Rica etmek method, gelen isteğin bir örneğidir ve rotaya yönelik isteklerle etkileşim kurmak için örneğinizin sayısız yöntemini kullanabilirsiniz.
http. HandFunc("/kullanıcılar", işlev(http ile. ResponseWriter, r *http. Rica etmek) {
anahtar R. Yöntem {
dava"ELDE ETMEK":
// GET isteğini işle
dava"POSTALAMAK":
// POST isteğini işle
varsayılan:
http. Hata (w, "Geçersiz istek yöntemi", http. StatusMethodNotAllowed)
}
})
Yukarıdaki kod kullanır http için bir HTTP işleyici işlevi tanımlamak için paket /users rota. İşleyici işlevi, rota üzerinde gelen HTTP isteklerini dinler ve bunları istek yöntemine göre işler (örn. ELDE ETMEK, POSTALAMAK, vesaire.)
işleyici işlevi alır Yanıt Yazarı Ve Rica etmek Argüman olarak yöntemler. bu Yanıt Yazarı işleyicinin istemciye yanıt olarak veri yazmasına yardımcı olan bir arabirimdir ve Rica etmek HTTP yöntemi, URL, başlıklar vb. gibi gelen istek hakkında bilgi içeren bir yapıdır.
Yukarıdaki işleyici işlevi bir anahtar istek yöntemini belirlemek ve yönteme göre farklı kod bloklarını çalıştırmak için ifade. yöntem ise ELDE ETMEK, işleyici ELDE ETMEK rica etmek. Aksi takdirde, yöntem POSTALAMAK; halledecek POSTALAMAK rica etmek.
Yöntem başka bir şeyse, bir http. Hata "Geçersiz istek yöntemi" mesajı ve StatusMethodNotAllowedHTTP durum kodu Müşteriye.
Dizeleri kullanarak istemciye geri yazabilirsiniz. Yazmak dizelerin bir bayt dilimini alan ve dizeyi yazan yazar örneğinizin yöntemi.
w. Yazmak([]bayt("Selam Dünya!"))
kullanabilirsiniz Başlığı Yaz senin yöntemin Yanıt Yazarı istemciye başlık yazmak için örnek.
w. Yazı Başlığı (http. DurumTamam)
HTTP ara yazılımıyla çalışma
Ara yazılım, istek bir sonraki işleyici işlevine geçmeden önce işlemler için gelen HTTP isteklerini engelleyen işlevlerden oluşur.
İşte Go'da ara yazılım işleyici işlevinin günlüğe kaydedilmesine bir örnek:
işlevgünlük ara yazılımı(sonraki http. işleyici)http.işleyici {
geri dönmek http. HandlerFunc(işlev(http ile. ResponseWriter, r *http. Rica etmek) {
// isteği günlüğe kaydet
Sonraki. HTTP'ye hizmet et(w, r)
// yanıtı günlüğe kaydet
})
}
bu günlük ara yazılımı işlev bir HTTP işleyicisini alır ve yeni bir HTTP işleyicisi döndürür. Döndürülen HTTP işleyicisi, bir HTTP yanıt yazıcısı ve bir HTTP isteği alan anonim bir işlevdir. İşlev, isteği günlüğe kaydeder ve HTTP'ye hizmet et yöntemi Sonraki HTTP işleyicisi, yanıt yazarını ve isteği bağımsız değişken olarak iletir.
Ara katman işlevlerini aşağıdakilerle gerçekleştirebilirsiniz: Halletmek yöntemi http paket. bu Halletmek yöntem rotayı ve ara yazılım işlevini alır.
http. Halletmek("/", günlük ara yazılımı (http. HandlerFunc (işleyici)))
HTTP Paketi ile Yönlendirmeler
Yönlendirme, kullanıcıları diğer kaynaklara veya web sayfalarına yönlendiren web uygulamaları için popüler bir işlemdir.
kullanarak başka bir web sayfasına yönlendirebilirsiniz. Yönlendirme yöntemi http paket.
http. Yönlendirme (w, r, " http://example.com", http. DurumTaşındıKalıcı olarak)
bu Yönlendirme yöntemi alır Yanıt Yazarı Ve Rica etmek örnekler, yeni sayfa URL'si ve yönlendirme için bir durum kodu.
Go'da Karmaşık API'ler Oluşturabilirsiniz
bu http package, karmaşık API'ler oluşturmak için güçlü ve esnek bir araçtır. Go'nun zengin standart kitaplığını ve diğer güçlü API'lerinize veritabanı bağlantısı ve farklı web desteği gibi işlevsellik eklemek için üçüncü taraf paketleri çerçeveler.
Go ile, önemli istek trafiğini ve karmaşık veri işleme görevlerini kolaylıkla işleyen ölçeklenebilir, yüksek performanslı API'ler oluşturabilirsiniz.