Heim >Backend-Entwicklung >Golang >Wie werden Webseiten und API-Routen am selben Port mit unterschiedlichen Mustern bereitgestellt?

Wie werden Webseiten und API-Routen am selben Port mit unterschiedlichen Mustern bereitgestellt?

Susan Sarandon
Susan SarandonOriginal
2024-11-15 19:53:03749Durchsuche

How to Serve Web Pages and API Routes on the Same Port with Different Patterns?

Bereitstellen von Webseiten und API-Routen auf demselben Port mit unterschiedlichen Mustern

In Webanwendungen ist es häufig erwünscht, sowohl statische Webseiten als auch API-Routen unter Verwendung derselben Portadresse. Um dies zu erreichen, können Sie die vom net/http-Paket bereitgestellten Mustervergleichsfunktionen nutzen.

Durch die Registrierung eines Dateihandlers für die Stamm-URL („/“) werden statische Inhalte aus einem angegebenen Verzeichnis bereitgestellt. Zum Beispiel:

fs := http.FileServer(http.Dir("server/webapps/play_maths"))
http.Handle("/", fs)

Um API-Routen bereitzustellen, können Sie einen separaten Handler mit einem Router wie mux.Router erstellen. Beispiel:

func UserRoutes() *mux.Router {
    router := mux.NewRouter().StrictSlash(true)
    router.HandleFunc("/user/create", api.CreateUser)
    router.HandleFunc("/user/get/all", api.GetAllUsers)
    return router
}

Durch die Registrierung dieses API-Routers mit einem bestimmten Muster können Sie API-Anfragen mit unterschiedlichen Pfaden verarbeiten. Zum Beispiel:

http.Handle("/api", UserRoutes())

Laut der Net/http-Dokumentation haben längere Muster Vorrang vor kürzeren. Dies bedeutet, dass jede Anfrage, die mit „/api/“ beginnt, vom API-Router verarbeitet wird, während jede andere Anfrage an den Dateihandler weitergeleitet wird.

Beachten Sie, dass dieser Ansatz sorgfältige Überlegungen erfordert, um potenzielle Konflikte zu vermeiden. Wenn beispielsweise statische Dateien im Verzeichnis „/api/“ abgelegt würden, wäre auf sie nicht mehr zugegriffen werden, da das API-Muster Vorrang hat.

Das obige ist der detaillierte Inhalt vonWie werden Webseiten und API-Routen am selben Port mit unterschiedlichen Mustern bereitgestellt?. 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