Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

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.

instagram viewer

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.