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
2 Perbandingan Singkat: GraphQL vs REST API
07 Jul 2025
24 Implementasi Bidirectional Streaming RPC
07 Jul 2025
23 Implementasi Client-side Streaming RPC
07 Jul 2025
22 Implementasi Server-side Streaming RPC
06 Jun 2025
21 Memahami Konsep Streaming pada gRPC
06 Jun 2025
20 Menambahkan Interceptor Unary di Client
06 Jun 2025
19 Menambahkan Interceptor Unary di Server
06 Jun 2025

2 Perbandingan Singkat: GraphQL vs REST API

24 Implementasi Bidirectional Streaming RPC

23 Implementasi Client-side Streaming RPC

22 Implementasi Server-side Streaming RPC

21 Memahami Konsep Streaming pada gRPC

20 Menambahkan Interceptor Unary di Client
