2017-09-05 2 views
1

Ich versuchte es nachschlagen, konnte aber keine bereits beantwortete Frage finden.Wie bekomme ich die URL in Go

Wie bekomme ich den Host-Teil der URL in Go?

Für z.

Wenn der Benutzer http://localhost:8080 in die Adressleiste eingibt, wollte ich "localhost" aus der URL extrahieren.

Antwort

1

Go hat eine integrierte Bibliothek, die es für Sie tun kann.

package main 
import "fmt" 
import "net" 
import "net/url" 
func main() { 
    s := "http://localhost:8080" 

    u, err := url.Parse(s) 
    if err != nil { 
     panic(err) 
    } 

    host, _, _ := net.SplitHostPort(u.Host) 
    fmt.Println(host) 
} 

https://golang.org/pkg/net/url/#

+0

Im Beispiel wie bekomme ich die aktuelle URL, die vom Benutzer für den Zugriff auf die Seite eingegeben wurde? – abel

+0

Das hängt davon ab, wie Sie Ihren Server geschrieben haben. Aber wahrscheinlich kann diese Antwort Ihnen helfen: https://Stackoverflow.com/a/24519179/170961 – matiit

2

Wenn Sie sprechen über den Host von einem *http.Request extrahieren können Sie folgendes tun:

func ExampleHander(w http.ResponseWriter, r *http.Request) { host := r.Host // This is your host (and will include port if specified) }

Wenn Sie nur den Host-Teil, ohne den Port zugreifen möchten Teil können Sie Folgendes tun:

func ExampleHandler(w http.ResponseWriter, r *http.Request) { host, port, _ := net.SplitHostPort(r.Host) }

Für die letzten Sie auch net

Go hat wunderbare Dokumentation importieren müssen zu arbeiten, würde ich empfehlen, auch einen Blick auf der Einnahme: oben net/http