[GO] “go curl” “go request url” golang 에서 url 호출하기

golang 에서는 일반적인 url 호출 에는 net/http 패키지가 있다

curl https://api.example.com/surprise \
     -u banana:coconuts \
     -d "sample data"
// Generated by curl-to-Go: https://mholt.github.io/curl-to-go

// curl https://api.example.com/surprise \
//      -u banana:coconuts \
//      -d "sample data"

params := url.Values{}
params.Add("sample data", ``)
body := strings.NewReader(params.Encode())

req, err := http.NewRequest("POST", "https://api.example.com/surprise", body)
if err != nil {
	// handle err
}
req.SetBasicAuth("banana", "coconuts")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

resp, err := http.DefaultClient.Do(req)
if err != nil {
	// handle err
}
defer resp.Body.Close()

위와 같은 방식의 curl 을 호출하는 net.http 패키지를 이용한 request 코드는 위와 같다
이 코드는 curl 명령을 그대로 golang 코드로 바꾸어주는 https://mholt.github.io/curl-to-go/ 사이트를 이용해나온 코드이다


다른 방법으로
이보다 심플하게 request 코드를 구성할 수 있는데
decorate 패턴을 이용해 구현된 go resty 라는 패키지 이다

https://github.com/go-resty/resty

import "github.com/go-resty/resty/v2"


client := resty.New()
resp, err := client.R().
SetBody(jsonvar).
SetResult(AuthSuccess{}). // or SetResult(AuthSuccess{}).
SetError(&AuthError{}).   // or SetError(AuthError{}).
Post("http://url/url/url")

body 에 json 변수를 넣었고 해당 변수에 들어간 타입에 따라 자동으로 mime 타입이 결정
json 에 대한 마샬링/언마샬링을 자동으로 해준다..

자세한 내용은 위 링크를 통해 확인가능하다


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다