2017-09-13 1 views
0

http 요청을 보내야합니다. https://some-domain.com/getsomething/?id=myID URL이 있으므로 쿼리 매개 변수를 추가해야합니다. 여기에 내가 URL을 참조 출력에서 ​​내 이동 코드go에서 쿼리 문자열 URL 추가

baseUrl := "https://some-domain.com" 
relativeUrl := "/getsomething/" 
url, _ := url.Parse(baseUrl) 
url.Path = path.Join(url.Path, relativeUrl) 

// add parameter to query string 
queryString := url.Query() 
queryString.Set("id", "1") 
// add query to url 
url.RawQuery = queryString.Encode() 
// print it 
fmt.Println(url.String()) 

입니다 : https://some-domain.com/getsomething?id=1

을 그리고이 하나 필요합니다 https://some-domain.com/getsomething/?id=1

당신은 ? 전에 더 / 문자가없는 것을 알 수있다.

수동 문자열 조작없이 문제를 해결하는 방법을 알고 계십니까?

https://play.golang.org/p/HsiTzHcvlQ

+0

모든이 코드를 확인하고, 나를 위해 출력은'HTTPS입니다. [Set] (https://golang.org/pkg/net/url/#Values.Set) 함수가 문자열을 값으로 사용하기 때문에 코드를 편집했습니다. –

+0

나는 당신의 프로그램을 시험해 보았고, 결과물은 필요하다. ('https : //some-domain.com/getsomething/? id = 1'). 놀이터에서 - https://play.golang.org/p/M87JQqFb45 – Ravi

+0

죄송합니다.이 질문에서 내 코드를 더 간단하게 만들었습니다. 업데이트 됨. – Vitalii

답변

2

당신은 ResolveReference를 사용할 수 있습니다. ? //some-domain.com/getsomething/ ID = 1` :

package main 

import (
    "fmt" 
    "log" 
    "net/url" 
) 

func main() { 
    relativeUrl := "/getsomething/" 
    u, err := url.Parse(relativeUrl) 
    if err != nil { 
     log.Fatal(err) 
    } 

    queryString := u.Query() 
    queryString.Set("id", "1") 
    u.RawQuery = queryString.Encode() 

    baseUrl := "https://some-domain.com" 
    base, err := url.Parse(baseUrl) 
    if err != nil { 
     log.Fatal(err) 
    } 

    fmt.Println(base.ResolveReference(u)) 
} 

https://play.golang.org/p/BIU29R_XBM

+0

나는 같은 출력을보고, 여기를 확인 https://play.golang.org/p/09Ukn5deXE – Vitalii

+0

요프, 내 잘못. 업데이트 됨. – s7anley

+0

감사합니다. – Vitalii