Bereitstellung von Webseiten und API-Routen auf demselben Port mit unterschiedlichen Handle-Mustern
Bereitstellung von Webseiten und API-Routen auf demselben Port mit Unterschiedliche Handle-Muster sind eine häufige Anforderung in der Webentwicklung. So erreichen Sie dies in Go mit dem Paket net/http:
Das Paket net/http stellt den ServeMux-Typ bereit, der eine Reihe von Handlern für eingehende HTTP-Anfragen verwaltet. Die Registrierung von Handlern erfolgt über die Handle-Methode. Laut Dokumentation haben längere Muster Vorrang vor kürzeren. Diese Eigenschaft kann genutzt werden, um Webseiten und API-Routen gleichzeitig auf demselben Port bereitzustellen.
Um beispielsweise Webseiten unter dem Stammpfad / und API-Routen unter /api bereitzustellen, können Sie den folgenden Code verwenden:
fs := http.FileServer(http.Dir("server/webapps/play_maths")) http.Handle("/", fs) // Handles web pages at root path apiRoutes := UserRoutes() // Initialize API routes as a handler http.Handle("/api", apiRoutes.ServeHTTP) // Handles API routes
Die UserRoutes-Funktion erstellt einen Subrouter für API-Routen. Standardmäßig erben Unterrouter das Präfix des übergeordneten Routers, Sie können dieses Verhalten jedoch mit der PathPrefix-Methode überschreiben. Der Router wird dann als Handler für unsere API-Routen verwendet.
Indem wir den Webseiten-Handler vor dem API-Routen-Handler registrieren und sicherstellen, dass der Webseiten-Handler ein kürzeres Muster hat, nutzen wir die Tatsache aus, dass längere Muster vorhanden sind Vorrang haben. Daher werden Anfragen, die mit /api beginnen, vom API-Routen-Handler verarbeitet, während alle anderen Anfragen (einschließlich derjenigen an den Stammpfad) vom Webseiten-Handler verarbeitet werden.
Dieser Ansatz bietet eine Flexible Möglichkeit, verschiedene Arten von HTTP-Anfragen auf demselben Server zu verarbeiten, ohne dass mehrere Prozesse ausgeführt oder ein Reverse-Proxy verwendet werden müssen.
Das obige ist der detaillierte Inhalt vonWie stelle ich in Go Webseiten und API-Routen am selben Port bereit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!