[go] HTTP GET 요청 처리하기
Go 언어를 사용하면 HTTP 클라이언트를 만들고 서버에 GET 요청을 보내는 것이 매우 간단합니다. 이를 통해 웹 서버에서 데이터를 검색하거나 외부 API와 상호 작용할 수 있습니다.
HTTP GET 요청 보내기
Go 언어의 내장된 net/http
패키지를 사용하여 HTTP GET 요청을 보낼 수 있습니다. 예를 들어, “https://api.example.com/data”에 GET 요청을 보내고 응답을 처리하는 방법은 다음과 같습니다.
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
response, err := http.Get("https://api.example.com/data")
if err != nil {
fmt.Println("GET request failed:", err)
return
}
defer response.Body.Close()
data, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("Failed to read response body:", err)
return
}
fmt.Println(string(data))
}
위의 예제에서는 http.Get
함수를 사용하여 GET 요청을 보내고, ioutil.ReadAll
함수를 사용하여 응답 바디를 읽어옵니다.
요청에 헤더 추가하기
HTTP 요청에 헤더를 추가하여 추가적인 정보를 보낼 수 있습니다. 예를 들어, “Accept” 헤더를 사용하여 API가 JSON 형식의 응답을 보내도록 요청하는 방법은 다음과 같습니다.
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
req, err := http.NewRequest("GET", "https://api.example.com/data", nil)
if err != nil {
fmt.Println("Failed to create request:", err)
return
}
req.Header.Set("Accept", "application/json")
client := &http.Client{}
response, err := client.Do(req)
if err != nil {
fmt.Println("GET request failed:", err)
return
}
defer response.Body.Close()
data, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("Failed to read response body:", err)
return
}
fmt.Println(string(data))
}
위의 예제에서는 http.NewRequest
함수를 사용하여 새로운 Request 객체를 생성하고, 이 객체에 “Accept” 헤더를 추가한 후 client.Do
메서드를 사용하여 요청을 전송합니다.
요청에 쿼리 파라미터 추가하기
GET 요청에 쿼리 파라미터를 추가하여 요청하는 방법은 url을 구성할 때 직접 추가하면 됩니다.
package main
import (
"fmt"
"net/http"
"io/ioutil"
"net/url"
)
func main() {
baseURL := "https://api.example.com/data"
u, err := url.Parse(baseURL)
if err != nil {
fmt.Println("Failed to parse URL:", err)
return
}
q := u.Query()
q.Set("key1", "value1")
q.Set("key2", "value2")
u.RawQuery = q.Encode()
response, err := http.Get(u.String())
if err != nil {
fmt.Println("GET request failed:", err)
return
}
defer response.Body.Close()
data, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("Failed to read response body:", err)
return
}
fmt.Println(string(data))
}
위의 예제에서는 url.Parse
함수로 baseURL을 parsing한 후, url.Values
를 사용하여 쿼리 파라미터를 추가하고, u.RawQuery
를 사용하여 해당 url로 요청을 보냅니다.
이제 Go를 사용하여 HTTP GET 요청을 보내고, 직접 처리해보세요!