Kode Program : Request Header

Golang Web – Header

Selain Query Parameter, dalam HTTP ada juga yang bernama Header, Header adalah informasi tambahan yang bisa dikirim dari client ke server atau sebaliknya. Jadi Header tidak hanya ada pada HTTP Request, pada HTTP Response pun kita bisa menambahkan informasi Header. Saat kita menggunakan browser, biasanya secara otomatis Header akan ditambahkan oleh browser, seperti informasi browser, jenis tipe konten yang dikirim dan diterima oleh browser, dan lain-lain.

Request Header

Untuk menangkap request Header yang dikirim oleh client, kita bisa mengambilnya di Request.Header. Header mirip seperti Query Parameter, isinya adalah map[string][]string. Tetapi berbeda dengan Query Parameter yang case sensitive, secara spesifikasi Header key tidaklah case sensitive.

package belajar_golang_web

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

func RequestHeader(writer http.ResponseWriter, request *http.Request) {
	contentType := request.Header.Get("content-type")
	fmt.Fprint(writer, contentType)
}

func TestRequestHeader(t *testing.T) {
	request := httptest.NewRequest(http.MethodPost, "http:/localhost:8080/", nil)
	request.Header.Add("Content-Type", "application/json")

	recorder := httptest.NewRecorder()

	RequestHeader(recorder, request)

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

	fmt.Println(string(body))
}
Kode Program : Request Header
Kode Program : Request Header

Response Header

Sebelumnya kita telah menambahkan custom header pada request, sedangkan jika kita ingin menambahkan header pada response, kita bisa menggunakan function ResponseWriter.Header().

package belajar_golang_web

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

func ResponseHeader(writer http.ResponseWriter, request *http.Request) {
	writer.Header().Add("X-Powered-By", "go.rendy.dev")
	fmt.Fprint(writer, "OK")
}

func TestResponseHeader(t *testing.T) {
	request := httptest.NewRequest(http.MethodPost, "http:/localhost:8080/", nil)
	request.Header.Add("Content-Type", "application/json")

	recorder := httptest.NewRecorder()

	ResponseHeader(recorder, request)

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

	fmt.Println(string(body))

	fmt.Println(response.Header.Get("X-Powered-By"))
}
Kode Program : Response Header
Kode Program : Response Header

Penutup

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