A Go egy hatékony és rugalmas nyelv webes alkalmazások készítéséhez. A háló csomag alapvető szerepet játszik a Go ökoszisztémájában.
A legtöbb szerveroldali programozási nyelvhez hasonlóan a Go is egy HTTP-csomaggal érkezik a HTTP protokollal való interakcióhoz. A vonatkozó Go csomag a http csomag, egy alcsomag a háló csomag.
Mi az a net/http csomag?
A net/http csomag a Go egyik szabványos könyvtára. A funkciók és típusok teljes készletét biztosítja a HTTP-kliensek, -kiszolgálók és más HTTP-alapú műveletek felépítéséhez. Ezek tartalmazzák:
- Funkciók HTTP-kérésekhez.
- Kérések és válaszok kezelése.
- HTTP kérések kiszolgálása.
- Kapcsolódó objektumok, például fejlécek és cookie-k.
A net/http A csomag támogatja a TLS/SSL titkosítást, a HTTP/2-t és más fejlett szolgáltatásokat is, így a csomag elengedhetetlen eszközzé válik a Go fejlesztői számára.
Számos népszerű Go könyvtár és keretrendszer, a Gorilla webes eszközkészlettől az Echo webes keretrendszerig, a net/http csomag.
Egyszerű HTTP szerver indítása
A kiszolgálók indítása az egyik alapvető művelet, amelyet meg kell értenie a HTTP-protokoll használatához.
Itt egy program futtasson egy egyszerű szervert a Go-ban:
csomag fő-
import (
"fmt"
"net/http"
)// A kezelő egy tipikus HTTP kérés-válasz kezelő a Go-ban; részletek később
funckezelő(w http. ResponseWriter, r *http. Kérés) {
// Az Fprintf a karakterláncot íróra formázza
fmt. Fprintf (w, "Helló Világ!")
}
funcfő-() {
http. HandleFunc("/", kezelő)
http. ListenAndServe(":8080", nulla)
}
A kezelő függvény egy tipikus kérés-válasz kezelő a http csomag. Ez a függvény a "Hello, World!" a HTTP válaszíróhoz.
A kód futtatásáról és a látogatásról http://localhost: 8080/ egy webböngészőben a "Hello, World!" karakterlánc jelenik meg a böngészőben.
Kérések és válaszok kezelése
A bejövő kéréseket a HandleFunc módszere a http csomag. A HandleFunc metódus egy útvonal karakterláncot és egy kezelő függvényt vesz fel.
A http. Kérés A metódus a bejövő kérés egy példánya, és a példányának számos módszerét használhatja az útvonal kéréseivel való interakcióhoz.
http. HandleFunc("/felhasználók", func(w http. ResponseWriter, r *http. Kérés) {
kapcsoló r. módszer {
ügy"KAP":
// kezeli a GET kérést
ügy"POST":
// POST kérés kezelése
alapértelmezett:
http. Hiba (w, "Érvénytelen kérési mód", http. StatusMethodNotAllowed)
}
})
A fenti kód a http csomag HTTP-kezelő függvényének meghatározásához a /users útvonal. A kezelő függvény figyeli a bejövő HTTP kéréseket az útvonalon, és feldolgozza azokat a kérési metódus alapján (pl. KAP, POSTstb.)
A kezelő funkció a ResponseWriter és Kérés módszereket érvként. A ResponseWriter egy olyan interfész, amely segíti a kezelőt, hogy adatokat írjon válaszként a kliensnek, és a Kérés egy olyan struktúra, amely információkat tartalmaz a bejövő kérésről, például a HTTP metódusról, URL-ről, fejlécekről stb.
A fenti kezelő funkció a kapcsoló utasítást a kérési metódus meghatározásához és a metódus alapján különböző kódblokkok futtatásához. Ha a módszer az KAP, a kezelő fogja kezelni a KAP kérés. Egyébként a módszer az POST; kezelni fogja a POST kérés.
Ha a módszer valami más, akkor elküld egy http. Hiba "Érvénytelen kérési mód" üzenettel és a StatusMethodNotAllowedHTTP állapotkód az ügyfélnek.
A karakterláncokat visszaírhatja az ügyfélnek a Ír Az írópéldány metódusa, amely egy bájtos karakterlánc-szeletet vesz fel, és megírja a karakterláncot.
w. Ír([]byte("Helló Világ!"))
Használhatja a WriteHeader módszered ResponseWriter példát fejlécek írásához az ügyfélnek.
w. WriteHeader (http. ÁllapotOK)
HTTP Middleware használata
A köztes szoftver olyan függvényekből áll, amelyek elfogják a bejövő HTTP-kéréseket műveletekre, mielőtt a kérés a következő kezelőfunkcióhoz érkezne.
Íme egy példa a köztesszoftver-kezelő funkció naplózására a Go-ban:
funcnaplózásKözépprogram(következő http. Kezelő)http.Kezelő {
Visszatérés http. HandlerFunc(func(w http. ResponseWriter, r *http. Kérés) {
// naplózza a kérést
következő. HTTP kiszolgálása(w, r)
// naplózza a választ
})
}
A naplózásKözépprogram függvény bevesz egy HTTP-kezelőt, és egy új HTTP-kezelőt ad vissza. A visszaadott HTTP-kezelő egy névtelen függvény, amely fogad egy HTTP-válasz írót és egy HTTP-kérést. A függvény naplózza a kérést, és meghívja a Server HTTP módszer a következő HTTP-kezelő, argumentumként adja át a válaszírót és a kérést.
A köztes szoftver funkciókat kezelheti a Fogantyú módszere a http csomag. A Fogantyú módszer veszi az útvonalat és a köztes szoftver funkciót.
http. Fogantyú("/", naplózásKözépprogram (http. HandlerFunc (handler)))
Átirányítások a HTTP-csomaggal
Az átirányítás olyan webalkalmazások népszerű művelete, amelyek más erőforrásokhoz vagy weboldalakhoz irányítják a felhasználókat.
A segítségével átirányíthat egy másik weboldalra Átirányítás módszere a http csomag.
http. Átirányítás (w, r, " http://example.com", http. ÁllapotÁthelyezve Véglegesen)
A Átirányítás módszer veszi be a ResponseWriter és Kérés példányokat, az új oldal URL-jét és az átirányítás állapotkódját.
Összetett API-kat építhet a Go-ban
A http csomag egy hatékony és rugalmas eszköz komplex API-k építéséhez. Használhatja a Go gazdag szabványos könyvtárát és más hatékony harmadik féltől származó csomagok az API-k funkcionalitásának hozzáadásához, mint például az adatbázis-kapcsolat és a különböző webek támogatása keretek.
A Go segítségével méretezhető, nagy teljesítményű API-kat építhet, amelyek könnyedén kezelik a jelentős kéréseket és az összetett adatfeldolgozási feladatokat.