Kode program : Create cookie

Golang Web – Cookie

HTTP merupakan stateless antara client dan server, artinya server tidak menyimpan data apapun untuk mengingat tiap request dari client. Hal ini bertujuan agar mudah melakukan scalability di sisi server.

Lantas bagaimana caranya agar server bisa mengingat sebuah client? Misal ketika kita sudah login di website, server otomatis harus tau jika client tersebut sudah login, sehingga request selanjutnya tidak perlu diminta untuk login lagi. Untuk melakukan hal ini kita bisa memanfaatkan Cookie.

Cookie

Cookie adalah fitur HTTP dimana server bisa memberi response cookie(key-value) dan client akan menyimpan cookie tersebut di web browser. Request selanjutnya, client akan selalu membawa cookie tersebut secara otomatis. Dan server secara otomatis akan selalu menerima data cookie yang dibawa oleh client setiap kali client mengirim request.

Membuat cookie

Cookie merupakan data yang dibuat di server dan sengaja agar disimpan di web browser, untuk membuat cookie di server, kita bisa menggunakan function http.SetCookie()

Buat file baru dengan nama cookie_test.go, kemudian masukkan baris kode berikut ini :

package belajar_golang_web

import (
	"fmt"
	"net/http"
)

func SetCookie(writer http.ResponseWriter, request *http.Request) {
	cookie := new(http.Cookie)
	cookie.Name = "X-Name"
	cookie.Value = request.URL.Query().Get("name")
	cookie.Path = "/"

	http.SetCookie(writer, cookie)
	fmt.Fprint(writer, "Success create cookie")
}
Kode program : Create cookie
Kode program : Create cookie

Mengambil cookie

func GetCookie(writer http.ResponseWriter, request *http.Request) {
	cookie, err := request.Cookie("X-Name")
	if err != nil {
		fmt.Fprint(writer, "No Cookie")
	} else {
		fmt.Fprintf(writer, "Hello %s", cookie.Value)
	}
}
Kode program : Get cookie
Kode program : Get cookie

Untuk mengambil cookie, bisa kita lakukan melalui request seperti contoh diatas. Untuk mencoba dan melihat cara kerjanya, buat unit test baru yang me runnging server mux, seperti berikut

func TestCookie(t *testing.T) {
	mux := http.NewServeMux()
	mux.HandleFunc("/set-cookie", SetCookie)
	mux.HandleFunc("/get-cookie", GetCookie)

	server := http.Server{
		Addr:    "localhost:8080",
		Handler: mux,
	}

	err := server.ListenAndServe()
	if err != nil {
		panic(err)
	}
}
Kode program : Test cookie
Kode program : Test cookie

Penutup

Pada artikel kali ini kita telah belajar tentang cookie pada golang web. Dan pada artikel selanjutnya saya akan membahas file server 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