Pengenalan Header
Selain query parameter pada HTTP juga kita bisa menggunakan Header. Header adalah informasi tambahan yang biasa dikirim dari client ke server atau pun sebaliknya. Dalam Header, tidak hanya ada pada HTTP Request tetapi pada HTTP Respone pun kita bisa menambahkan informasi header. Saat kita menggunakan browser pada komputer kita, biasanya secara otomatis header akan ditampilkan oleh browser seperti informasi browser, jenis tipe content yang dikirim dan diterima oleh browser dan masih banyak lagi.
Memahami Request Header
Pada Golang kita bisa menangkap request Header yang dikirim oleh client itu kita bisa mengambilnya pada Request.Header
. Sama halnya seperti Query Parameter, isi dari Header tersebut berupa map[string][]string
. Tetapi ada perbedaan dengan Query Parameter yaitu tidak case sensitive
.
Response Header
Selanjutnya jika kita ingin menambahkan header pada response, kita juga bisa menggunakan ResponseWriter.Header()
. Kita bisa set header response pada program kita seperti dibawah ini.
w.Header().Add(X_POWERED_BY, poweredBy)
Implementasi
Kita coba lanjutkan untuk mengimplementasikan untuk menangkap header request yang dikirim oleh client. Kita buat handler-nya seperti dibawah ini.
const X_POWERED_BY = "X-Powered-By"
func RequestHedaerHandler(w http.ResponseWriter, r *http.Request) {
poweredBy := r.Header.Get(X_POWERED_BY)
w.Header().Add(X_POWERED_BY, poweredBy)
fmt.Fprint(w, poweredBy)
}
Pada kode diatas kita akan menangkap header dengan key X-Powered-By
yang dikirim oleh client lalu kita akan cetak dan melakukan pengujian dengan membuat unit test seperti dibawah ini.
func TestRequestHedaerHandler(t *testing.T) {
type args struct {
name string
}
tests := []struct {
name string
args args
want string
}{
{
name: "set powered by",
args: args{
name: "santekno",
},
want: "santekno",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
request := httptest.NewRequest(http.MethodGet, "http://localhost/say", nil)
request.Header.Add(X_POWERED_BY, tt.args.name)
recorder := httptest.NewRecorder()
RequestHedaerHandler(recorder, request)
response := recorder.Result()
poweredBy := response.Header.Get(X_POWERED_BY)
if !reflect.DeepEqual(poweredBy, tt.want) {
t.Errorf("poweredBy = %v, want %v", poweredBy, tt.want)
}
})
}
}
03 Penggunaan Query Parameter
05 Request Form Post
Artikel Terhangat
51. Menggunakan TLS di gRPC Server
07 Jul 2025
50 Protobuf JSON Marshal dan Unmarshal
07 Jul 2025
27 Menulis Skema Mutation di GraphQL
07 Jul 2025
49 Serialisasi dan Deserialisasi Manual
07 Jul 2025
26 Apa Itu Mutation dan Kapan Digunakan?
07 Jul 2025
48 Custom Options di Protobuf
07 Jul 2025

51. Menggunakan TLS di gRPC Server

50 Protobuf JSON Marshal dan Unmarshal

27 Menulis Skema Mutation di GraphQL

49 Serialisasi dan Deserialisasi Manual

26 Apa Itu Mutation dan Kapan Digunakan?
