Kode program : ServeFile

Golang Web – ServeFile

Kadang ada kasus misal kita hanya ingin menggunakan static file sesuai dengan yang kita inginkan. Hal ini bisa kita lakukan dengan function http.ServeFile(), dengan menggunakan function ini, kita bisa menentukan file mana yang ingin kita tulis ke http response.

package belajar_golang_web

import (
	"net/http"
	"testing"
)

func ServeFile(writer http.ResponseWriter, request *http.Request) {
	if request.URL.Query().Get("name") != "" {
		http.ServeFile(writer, request, "./resources/ok.html")
	} else {
		http.ServeFile(writer, request, "./resources/notfound.html")
	}
}

func TestServeFileServer(t *testing.T) {
	server := http.Server{
		Addr:    "localhost:8080",
		Handler: http.HandlerFunc(ServeFile),
	}

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

Golang Embed

Parameter function http.ServeFile hanya berisi string file name, sehingga tidak bisa menggunakan golang embed. Namun bukan berarti kita tidak bisa menggunakan golang embed, karena jiak untuk melakukan load file, kita hanya butuh menggunakan package fmt dan ResponseWriter saja.

package belajar_golang_web

import (
	_ "embed"
	"fmt"
	"net/http"
	"testing"
)

//go:embed resources/ok.html
var resourceOk string

//go:embed resources/notfound.html
var resourceNotFound string

func ServeFileEmbed(writer http.ResponseWriter, request *http.Request) {
	if request.URL.Query().Get("name") != "" {
		fmt.Fprint(writer, resourceOk)
	} else {
		fmt.Fprint(writer, resourceNotFound)
	}
}

func TestServeFileServerEmbed(t *testing.T) {
	server := http.Server{
		Addr:    "localhost:8080",
		Handler: http.HandlerFunc(ServeFileEmbed),
	}

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

Penutup

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