본문 바로가기

Go

golang http request query 추가 여러 방법

package main

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

func main() {

	// GET
	client := &http.Client{}

	// 1. query 를 host 뒤에 직접 입력
	host := "https://api.coinpaprika.com/v1/tickers"
	query1 := "limit=5"

	endPoint := fmt.Sprintf("%s?%s", host, query1)

	req, err := http.NewRequest(http.MethodGet, endPoint, nil)
	if err != nil {
		panic(err)
	}

	resp1, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	bytes, _ := io.ReadAll(resp1.Body)

	log.Println(string(bytes))

	// 2. 기존 host 에 query 추가하기

	req, err = http.NewRequest(http.MethodGet, host, nil)

	q := req.URL.Query()
	q.Add("limit", "5")

	req.URL.RawQuery = q.Encode()

	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	bytes, _ = io.ReadAll(resp.Body)
	log.Println(string(bytes))

	// 3. 새로운 url.Values 객체 생성후 엔코딩 ( 2번과 거의 동일 )

	req, err = http.NewRequest(http.MethodGet, host, nil)
	q = url.Values{}
	q.Add("limit", "5")
	req.URL.RawQuery = q.Encode()

	resp, err = client.Do(req)
	if err != nil {
		panic(err)
	}
	bytes, _ = io.ReadAll(resp.Body)
	log.Println(string(bytes))

}