Membuat Simple Server Dengan Go
Cara Membuat Simple Server di Golang
Golang atau Go adalah bahasa pemrograman yang efisien dan cocok untuk membuat server web sederhana. Dalam artikel ini, kita akan membuat server sederhana di Golang yang melayani file index.html
di root directory dan memiliki endpoint POST yang mengembalikan balasan dalam format JSON untuk operasi penambahan angka.
Persiapan Lingkungan
Pastikan Anda sudah menginstal Go di sistem Anda. Jika belum, Anda bisa mengunduhnya dari golang.org.
Langkah-langkah
1. Buat Direktori Proyek
mkdir simple-server
cd simple-server
2. Buat File index.html
Buat file index.html
di dalam direktori proyek dengan konten berikut:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kalkulator Penambahan</title>
</head>
<body>
<h1>Kalkulator Penambahan</h1>
<form id="calcForm">
<label for="num1">Angka Pertama:</label>
<input type="number" id="num1" placeholder="Angka pertama" required>
<br><br>
<label for="num2">Angka Kedua:</label>
<input type="number" id="num2" placeholder="Angka kedua" required>
<br><br>
<button type="submit">Hitung</button>
</form>
<p id="result"></p>
<script>
document.getElementById('calcForm').addEventListener('submit', async function(event) {
event.preventDefault();
const num1 = document.getElementById('num1').value;
const num2 = document.getElementById('num2').value;
const response = await fetch('/add', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ num1: parseFloat(num1), num2: parseFloat(num2) })
});
const result = await response.json();
document.getElementById('result').textContent = 'Hasil: ' + result.sum;
});
</script>
</body>
</html>
3. Buat File main.go
Buat file main.go
dan tambahkan kode berikut:
package main
import (
"encoding/json"
"fmt"
"net/http"
)
// Struct untuk format JSON input
type Request struct {
Num1 float64 `json:"num1"`
Num2 float64 `json:"num2"`
}
// Struct untuk format JSON output
type Response struct {
Sum float64 `json:"sum"`
}
// Handler untuk root directory
func handleRoot(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "index.html")
}
// Handler untuk POST request penambahan
func handleAdd(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
var req Request
// Decode JSON request body ke struct Request
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
http.Error(w, "Bad request", http.StatusBadRequest)
return
}
// Hitung penambahan
sum := req.Num1 + req.Num2
// Set header content type ke application/json
w.Header().Set("Content-Type", "application/json")
// Buat response struct dan encode ke JSON
response := Response{Sum: sum}
json.NewEncoder(w).Encode(response)
}
func main() {
// Route untuk root directory
http.HandleFunc("/", handleRoot)
// Route untuk POST request penambahan
http.HandleFunc("/add", handleAdd)
// Jalankan server di port 8080
fmt.Println("Server is running on port 8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
fmt.Println("Error starting server:", err)
}
}
4. Jalankan Server
Buka terminal, navigasi ke direktori proyek, dan jalankan server dengan perintah berikut:
go run main.go
5. Akses Server
Buka browser dan akses http://localhost:8080/
untuk melihat halaman index.html
. Masukkan dua angka dalam form dan klik tombol "Hitung". Hasil penambahan akan ditampilkan di bawah form.
Penjelasan Kode
- Struct Request dan Response:
Request
: Digunakan untuk mendefinisikan format input JSON yang berisi dua angka (num1
dannum2
).Response
: Digunakan untuk mendefinisikan format output JSON yang berisi hasil penambahan (sum
).
- Handler Functions:
handleRoot
: Melayani fileindex.html
ketika root URL diakses.handleAdd
: Mengelola request POST, mendekode JSON dari body request, menghitung penambahan, dan mengembalikan hasil dalam format JSON.
- Main Function:
- Mendefinisikan route untuk root directory dan endpoint
/add
. - Menjalankan server pada port 8080.
- Mendefinisikan route untuk root directory dan endpoint
Dengan mengikuti langkah-langkah di atas, Anda telah berhasil membuat server sederhana di Golang yang memiliki fungsi kalkulator penambahan lengkap dengan antarmuka HTML. Selamat mencoba!
Comments