Kode program : Query parameter

Golang Web – Cara menggunakan query parameter

Query parameter adalah salah satu fitur yang biasa kita gunakan ketika membuat web, query parameter biasanya digunakan untuk mengirim data dari client ke server. Untuk menambahkan query parameter kita bisa menggunakan ?nama=value pada url nya.

Dalam parameter Request, terdapat attribute URL yang berisi url.URL, dari data URL ini kita bisa mengambil data query parameter yang dikirim dari client dengan menggunakan method Query() yang akan mengembalikan map.

Buatlah file baru dengan nama query_param_test.go kemudian masukkan baris kode berikut ini

package belajar_golang_web

import (
	"fmt"
	"io"
	"net/http"
	"net/http/httptest"
	"testing"
)

func SayHello(writer http.ResponseWriter, request *http.Request) {
	name := request.URL.Query().Get("name")
	if name == "" {
		fmt.Fprint(writer, "Hello")
	} else {
		fmt.Fprintf(writer, "Hello %s", name)
	}
}

func TestQueryParameter(t *testing.T) {
	request := httptest.NewRequest(http.MethodGet, "http://localhost:8080/hello?name=Rendy", nil)
	recorder := httptest.NewRecorder()

	SayHello(recorder, request)

	response := recorder.Result()
	body, _ := io.ReadAll(response.Body)

	fmt.Println(string(body))
}
Kode program : Query parameter
Kode program : Query parameter

Multiple query parameter

Dalam spesifikasi URL, kita bisa menambahkan lebih dari satu query parameter, ini cocok sekali jika kita ingin mengirim banyak data ke server, cukup tambahkan query parameter lainnya. Untuk menambahkan query parameter kita bisa menggunakan tanda & dan di ikuti dengan query parameter lainnya.

package belajar_golang_web

import (
	"fmt"
	"io"
	"net/http"
	"net/http/httptest"
	"testing"
)

func MultipleQueryParameter(writer http.ResponseWriter, request *http.Request) {
	firstName := request.URL.Query().Get("first_name")
	lastName := request.URL.Query().Get("last_name")

	fmt.Fprintf(writer, "Hello %s %s", firstName, lastName)
}

func TestMultipleQueryParameter(t *testing.T) {
	request := httptest.NewRequest(http.MethodGet, "http://localhost:8080/hello?first_name=Rendy&last_name=Wijaya", nil)
	recorder := httptest.NewRecorder()

	MultipleQueryParameter(recorder, request)

	response := recorder.Result()
	body, _ := io.ReadAll(response.Body)

	fmt.Println(string(body))
}
Kode program : Multiple query parameter
Kode program : Multiple query parameter

Multiple value query parameter

Sebenarnya URL melakukan parsing query parameter dan menyimpannya dalam map[string][]string. Artinya dalam satu key query parameter, kita bisa memasukkan beberapa value. Caranya kita bisa menambahkan query parameter dengan nama yang sama, namun value berbeda, misal : name=Rendy&name=Wijaya

package belajar_golang_web

import (
	"fmt"
	"io"
	"net/http"
	"net/http/httptest"
	"strings"
	"testing"
)

func MultipleParameterValues(writer http.ResponseWriter, request *http.Request) {
	query := request.URL.Query()
	names := query["name"]
	fmt.Fprint(writer, strings.Join(names, " "))
}

func TestMultipleParameterValues(t *testing.T) {
	request := httptest.NewRequest(http.MethodGet, "http://localhost:8080/hello?name=Rendy&name=Wijaya", nil)
	recorder := httptest.NewRecorder()

	MultipleParameterValues(recorder, request)

	response := recorder.Result()
	body, _ := io.ReadAll(response.Body)

	fmt.Println(string(body))
}
Kode program : Multiple value query parameter
Kode program : Multiple value query parameter

Penutup

Pada artikel kali ini kita telah belajar tentang query parameter pada golang web. Dan pada artikel selanjutnya saya akan membahas header pada golang web.

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

About Me

About Me

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam.

Social Profiles

Facebook