Wprowadzenie do pakietu HTTP Go

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?

Przegląd pakietu 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!”.

wynikiem uruchomienia serwera

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *