Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie die Funktion net/http/httptest.NewTLSServer in Golang, um einen temporären HTTPS-Server zu starten

So verwenden Sie die Funktion net/http/httptest.NewTLSServer in Golang, um einen temporären HTTPS-Server zu starten

王林
王林Original
2023-11-18 14:48:36626Durchsuche

So verwenden Sie die Funktion net/http/httptest.NewTLSServer in Golang, um einen temporären HTTPS-Server zu starten

Im täglichen Go-Sprachentwicklungsprozess müssen wir häufig einen HTTPS-Server starten, um einige sicherheitsrelevante Funktionen zu testen, insbesondere bei der Entwicklung von Webanwendungen. Zu diesem Zeitpunkt können wir die integrierte Funktion net/http/httptest.NewTLSServer der Go-Sprache verwenden, um einen temporären HTTPS-Server zum Testen zu erstellen.

In diesem Artikel wird die Verwendung der NewTLSServer-Funktion zum Starten eines temporären HTTPS-Servers vorgestellt und außerdem spezifische Codebeispiele bereitgestellt.

1. Verwendung

Die Funktion NewTLSServer ist eine Funktion im Paket net/http/httptest und kann zum Erstellen eines HTTP-Testservers verwendet werden. Der Funktionsprototyp lautet wie folgt:

func NewTLSServer(handler http.Handler) *httptest.Server

Unter diesen ist der Handler-Parameter der HTTP-Anforderungsprozessor, der zum Verarbeiten von HTTP-Anforderungen und zum Zurückgeben von HTTP-Antworten verwendet wird.

Der Rückgabewert ist ein Zeiger vom Typ *httptest.Server, der den erstellten HTTP-Testserver darstellt.

Mit der NewTLSServer-Funktion müssen wir sie nur wie folgt aufrufen, um einen temporären HTTPS-Server zu starten:

server := httptest.NewTLSServer(handler)

Unter diesen ist der Handler ein HTTP-Anforderungsprozessor, der ein selbst definierter Prozessor oder ein von anderen Bibliotheken bereitgestellter Prozessor sein kann .

Es ist zu beachten, dass der hier erstellte HTTPS-Server ein temporärer Server ist und sein Zertifikat vorübergehend generiert wird. Daher sollte er nicht in einer echten Produktionsumgebung verwendet werden und ist nur für den Einsatz in Test- und Entwicklungsumgebungen geeignet.

2. Spezifisches Beispiel

Lassen Sie uns nun anhand eines konkreten Beispiels demonstrieren, wie Sie mit der NewTLSServer-Funktion einen temporären HTTPS-Server starten.

Im Beispielcode definieren wir einen HTTP-Anforderungshandler, um HTTP-Anfragen zu verarbeiten und HTTP-Antworten zurückzugeben. In der Testfunktion erstellen wir einen temporären HTTPS-Server, senden dann eine HTTP-Anfrage an ihn und drucken den Inhalt der HTTP-Antwort aus.

Der spezifische Code lautet wie folgt:

package main

import (
    "fmt"
    "net/http"
    "net/http/httptest"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello World!")
}

func test() {
    server := httptest.NewTLSServer(http.HandlerFunc(handler))
    defer server.Close()

    resp, err := server.Client().Get(server.URL)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println(resp.Status)
    fmt.Println(resp.Header)
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(body))
}

func main() {
    test()
}

Im obigen Code definieren wir zunächst einen HTTP-Anforderungsprozessor-Handler, um HTTP-Anforderungen zu verarbeiten und HTTP-Antworten zurückzugeben. Es empfängt zwei Parameter: einen Parameter w vom Typ http.ResponseWriter, der zum Schreiben von HTTP-Antwortdaten verwendet wird; einen Parameter r vom Typ *http.Request, der zum Speichern von HTTP-Anfragedaten verwendet wird.

In der Handler-Funktion schreiben wir einfach eine Textzeile „Hello World!“ in die HTTP-Antwort.

Als nächstes definieren wir eine Testfunktion. In der Testfunktion verwenden wir die Funktion NewTLSServer, um einen temporären HTTPS-Server zu erstellen und ihm die von uns definierte Handler-Funktion als Parameter zu übergeben. Anschließend rufen wir server.Client().Get(server.URL) auf, um eine HTTP-GET-Anfrage an diesen HTTPS-Server zu senden und die HTTP-Antwortdaten zu speichern. Abschließend geben wir den Statuscode, die Antwortheader und den Antwortinhalt der HTTP-Antwort aus.

Wenn wir dieses Programm ausführen, sollte die Ausgabe sein:

200 OK
map[Content-Length:[12] Content-Type:[text/plain; charset=utf-8]]
Hello World!

Dies zeigt an, dass wir erfolgreich einen temporären HTTPS-Server gestartet haben und HTTP-Anfragen an ihn senden und erfolgreich eine HTTP-Antwort erhalten können.

3. Fazit

In diesem Artikel haben wir gelernt, wie man die net/http/httptest.NewTLSServer-Funktion der Go-Sprache verwendet, um einen temporären HTTPS-Server zu starten. Wir stellen außerdem ein konkretes Codebeispiel bereit, das zeigt, wie Sie mit der NewTLSServer-Funktion einen HTTP-Anforderungshandler erstellen und einige HTTP-Anforderungen an ihn senden. Der in diesem Artikel bereitgestellte Beispielcode dient nur als Referenz und Sie können ihn entsprechend Ihren eigenen Anforderungen ändern und verwenden.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Funktion net/http/httptest.NewTLSServer in Golang, um einen temporären HTTPS-Server zu starten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn