Wprowadzenie do pakietu HTTP Go
Go to potężny i elastyczny język do tworzenia aplikacji internetowych. Pakiet sieciowy odgrywa istotną rolę w ekosystemie Go.
Podobnie jak większość języków programowania po stronie serwera, Go jest dostarczany z pakietem HTTP do interakcji z protokołem HTTP. Odpowiednim pakietem Go jest pakiet http , podpakiet pakietu net .
Co to jest pakiet net/http?
Pakiet net/http jest jedną ze standardowych bibliotek w Go. Zapewnia pełny zestaw funkcji i typów do budowania klientów HTTP, serwerów i innych operacji opartych na protokole HTTP. Obejmują one:
- Funkcje do wykonywania żądań HTTP.
- Obsługa próśb i odpowiedzi.
- Obsługa żądań HTTP.
- Powiązane obiekty, takie jak nagłówki i pliki cookie.
Pakiet net/http obsługuje również szyfrowanie TLS/SSL, HTTP/2 i inne zaawansowane funkcje, dzięki czemu pakiet jest niezbędnym narzędziem dla programistów Go.
Wiele popularnych bibliotek i struktur Go, od zestawu narzędzi sieciowych Gorilla po platformę sieciową Echo, opiera się na pakiecie net/http .
Uruchamianie prostego serwera HTTP
Uruchamianie serwerów to jedna z podstawowych operacji, które musisz zrozumieć, aby pracować z protokołem HTTP.
Oto program do uruchamiania prostego serwera w Go:
package main
import (
"fmt"
"net/http"
)
// handler is a typical HTTP request-response handler in Go; details later
func handler(w http.ResponseWriter, r *http.Request) {
// Fprintf formats the string to a writer
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Funkcja obsługi jest typowym modułem obsługi żądania-odpowiedzi dla pakietu http . Ta funkcja zapisuje ciąg znaków „Hello, World!” do modułu zapisującego odpowiedź HTTP.
Po uruchomieniu kodu i odwiedzeniu adresu http://localhost:8080/ w przeglądarce internetowej, w przeglądarce powinien zostać wyświetlony ciąg „Hello, World!”.
Obsługa żądań i odpowiedzi
Żądania przychodzące można obsługiwać za pomocą metody HandleFunc pakietu http . Metoda HandleFunc przyjmuje ciąg trasy i funkcję obsługi.
Metoda http.Request jest instancją przychodzącego żądania i możesz użyć wielu metod swojej instancji do interakcji z żądaniami do trasy.
http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "GET":
// handle GET request
case "POST":
// handle POST request
default:
http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
}
})
Powyższy kod używa pakietu http do zdefiniowania funkcji obsługi HTTP dla trasy /users . Funkcja obsługi nasłuchuje przychodzących żądań HTTP na trasie i przetwarza je na podstawie metody żądania (np. GET , POST itp.)
Funkcja obsługi przyjmuje metody ResponseWriter i Request jako argumenty. ResponseWriter to interfejs, który pomaga modułowi obsługi pisać dane jako odpowiedź dla klienta, a Request to struktura zawierająca informacje o przychodzącym żądaniu, takie jak metoda HTTP, adres URL, nagłówki itp.
Powyższa funkcja obsługi używa instrukcji switch do określenia metody żądania i uruchomienia różnych bloków kodu w oparciu o metodę. Jeśli metodą jest GET , program obsługi obsłuży żądanie GET . W przeciwnym razie metodą jest POST; obsłuży żądanie POST .
Jeśli metoda jest inna, wyśle do klienta komunikat http.Error z komunikatem „Invalid request method” i kodem stanu HTTP StatusMethodNotAllowed .
Możesz zapisywać łańcuchy z powrotem do klienta za pomocą metody Write instancji programu piszącego, która pobiera bajtowy wycinek ciągów i zapisuje ciąg.
w.Write([]byte("Hello, World!"))
Możesz użyć metody WriteHeader swojej instancji ResponseWriter , aby napisać nagłówki do klienta.
w.WriteHeader(http.StatusOK)
Praca z oprogramowaniem pośredniczącym HTTP
Oprogramowanie pośrednie składa się z funkcji, które przechwytują przychodzące żądania HTTP dotyczące operacji, zanim żądanie przejdzie do następnej funkcji obsługi.
Oto przykład rejestrowania funkcji obsługi oprogramowania pośredniego w Go:
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// log the request
next.ServeHTTP(w, r)
// log the response
})
}
Funkcja loggingMiddleware pobiera procedurę obsługi HTTP i zwraca nową procedurę obsługi HTTP. Zwrócona procedura obsługi HTTP jest funkcją anonimową, która przyjmuje zapis odpowiedzi HTTP i żądanie HTTP. Funkcja rejestruje żądanie i wywołuje metodę ServeHTTP w następnym programie obsługi HTTP, przekazując jako argumenty moduł zapisujący odpowiedź i żądanie.
Możesz obsłużyć funkcje oprogramowania pośredniego za pomocą metody Handle pakietu http . Metoda Handle przyjmuje trasę i funkcję oprogramowania pośredniczącego.
http.Handle("/", loggingMiddleware(http.HandlerFunc(handler)))
Przekierowania z pakietem HTTP
Przekierowanie jest popularną operacją w aplikacjach internetowych, które odsyłają użytkowników do innych zasobów lub stron internetowych.
Możesz przekierować na inną stronę używając metody Redirect pakietu http .
http.Redirect(w, r, "http://example.com", http.StatusMovedPermanently)
Metoda Redirect przyjmuje instancje ResponseWriter i Request , adres URL nowej strony oraz kod stanu przekierowania.
Możesz budować złożone interfejsy API w Go
Pakiet http to potężne i elastyczne narzędzie do tworzenia złożonych interfejsów API. Możesz użyć bogatej standardowej biblioteki Go i innych potężnych pakietów innych firm, aby dodać funkcje do swoich interfejsów API, takie jak łączność z bazą danych i obsługa różnych platform internetowych.
Dzięki Go możesz tworzyć skalowalne, wydajne interfejsy API, które z łatwością obsługują znaczny ruch żądań i złożone zadania przetwarzania danych.
Dodaj komentarz