go
Go Http GET 요청
까오기
2024. 7. 16. 10:56
Go에서 HTTP GET 요청에 쿼리 파라미터를 추가하여 값을 전달하는 방법을 예제로 보여드리겠습니다. 쿼리 파라미터를 사용하면 특정 요청에 대한 조건을 지정할 수 있습니다.
다음 예제는 https://jsonplaceholder.typicode.com/posts 엔드포인트에 userId라는 쿼리 파라미터를 추가하여 GET 요청을 보내는 방법을 보여줍니다.
예제 코드
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
)
func main() {
// 기본 URL 설정
baseURL := "https://jsonplaceholder.typicode.com/posts"
// 쿼리 파라미터 설정
params := url.Values{}
params.Add("userId", "1")
// URL에 쿼리 파라미터 추가
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
// HTTP GET 요청 보내기
resp, err := http.Get(fullURL)
if err != nil {
log.Fatalf("HTTP GET request failed: %v", err)
}
defer resp.Body.Close()
// 응답 바디 읽기
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Failed to read response body: %v", err)
}
// 응답 출력
fmt.Println("Response Status:", resp.Status)
fmt.Println("Response Body:", string(body))
}
코드 설명
- 패키지 선언 및 importnet/http 패키지는 HTTP 클라이언트와 서버를 구현하는 데 사용되고, net/url 패키지는 URL 인코딩 및 디코딩에 사용됩니다.
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
)
- 기본 URL 설정기본 URL을 설정합니다.
baseURL := "https://jsonplaceholder.typicode.com/posts"
- 쿼리 파라미터 설정url.Values 타입을 사용하여 쿼리 파라미터를 설정합니다. 여기서는 userId라는 파라미터를 1로 설정합니다.
params := url.Values{}
params.Add("userId", "1")
- URL에 쿼리 파라미터 추가params.Encode()를 사용하여 쿼리 파라미터를 URL 인코딩 형식으로 변환하고, 기본 URL과 결합하여 완전한 URL을 만듭니다.
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
- HTTP GET 요청 보내기http.Get 함수를 사용하여 완전한 URL로 GET 요청을 보냅니다. 요청 결과는 resp 변수에 저장됩니다. 오류가 발생할 경우 프로그램을 종료하고 에러를 출력합니다. defer resp.Body.Close()를 사용하여 요청이 완료된 후에 응답 바디를 닫습니다.
resp, err := http.Get(fullURL)
if err != nil {
log.Fatalf("HTTP GET request failed: %v", err)
}
defer resp.Body.Close()
- 응답 바디 읽기ioutil.ReadAll 함수를 사용하여 응답 바디의 모든 내용을 읽어 body 변수에 저장합니다. 오류가 발생하면 프로그램을 종료하고 에러를 출력합니다.
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Failed to read response body: %v", err)
}
- 응답 출력응답 상태 코드(resp.Status)와 응답 바디(string(body))를 출력하여 확인합니다.
fmt.Println("Response Status:", resp.Status)
fmt.Println("Response Body:", string(body))
실행
위의 코드를 main.go 파일에 저장하고, 터미널에서 다음 명령어를 실행하여 코드를 실행합니다:
go run main.go
예상 출력
다음은 예상되는 출력입니다. 출력 내용은 userId가 1인 포스트 목록입니다.
Response Status: 200 OK
Response Body: [
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit repellat..."
},
...
]
이 예제에서는 https://jsonplaceholder.typicode.com/posts 엔드포인트에 userId라는 쿼리 파라미터를 추가하여 GET 요청을 보내고, 해당하는 JSON 데이터를 가져와서 출력합니다.
출처 : chatGPT