2017-10-12 3 views
0

Je suis en train de mettre à jour une URL analysées comme:Comment ajouter schéma et le chemin de url.URL

u, _ := url.Parse(s) 
if u.Scheme == "" { 
    u.Scheme = "https" 
} 
if u.Path == "" { 
    u.Path = "api" 
} 

Mais il se trouve que si la chaîne initiale ne dispose pas du schéma d'URL (par exemple example.com) cette chaîne est analysée comme URL.Path et non URL.Host. Voir ceci Go playground link. Comment puis-je transformer ce example.com en https://example.com/api?

Répondre

1

La fonction Parse fonctionne hors de RFC 3986 Section 3 qui demande à être précédée de l'autorité // (hôte et port).

URI = schéma ":" hier-part ["?" requête] [ "#" fragment]

hier partie = "//" chemin abempty /chemin absolu /chemin-rootless autorité /path vide

Selon cette spécification du // est requis et la fonction Analyser l'applique. La chaîne que vous passez à la fonction Parse peut inclure un schéma d'URL vide, mais il doit inclure un // avant le nom d'hôte et le port pour qu'il analyse ces parties correctement. Comment voulez-vous imposer ce // à vous?