HTTP Server REST API

NusaScript memiliki web server bawaan untuk membuat REST API dengan mudah.

Fungsi HTTP Server

FungsiParameterKeterangan
server_baru(port)port: bilanganBuat server baru di port tertentu
rute(server, metode, jalan, handler)-Daftarkan route handler
jalankan_server(server)serverJalankan server (blocking)

Server Paling Sederhana

server-dasar.ns
buat app = server_baru(8080)

rute(app, "GET", "/", fungsi(req) {
    kembalikan ke_json(peta("pesan", "Halo dari NusaScript!"))
})

tampilkan("Server berjalan di http://localhost:8080")
jalankan_server(app)
Response GET http://localhost:8080/
{"pesan":"Halo dari NusaScript!"}

Fungsi Request Helpers

FungsiKeteranganContoh Nilai
metode_req(req)Method HTTP"GET", "POST"
jalan_req(req)URL path"/api/produk"
query(req, nama)Query string parameterquery(req, "id")
badan_req(req)Request body (JSON string)'{"nama":"Budi"}'
header_req(req, nama)HTTP headerheader_req(req,"authorization")

API dengan Multiple Routes

api-lengkap.ns
buat app = server_baru(8080)

// GET - Ambil daftar
rute(app, "GET", "/api/produk", fungsi(req) {
    buat data = [
        peta("id", 1, "nama", "Laptop", "harga", 15000000),
        peta("id", 2, "nama", "Mouse",  "harga", 250000)
    ]
    kembalikan ke_json(peta("data", data, "total", panjang(data)))
})

// POST - Tambah data baru
rute(app, "POST", "/api/produk", fungsi(req) {
    buat body = dari_json(badan_req(req))
    buat nama = ambil(body, "nama")

    jika nama == nihil {
        kembalikan ke_json(peta("kesalahan", "Field nama wajib diisi"))
    }

    kembalikan ke_json(peta(
        "pesan", "Produk berhasil ditambahkan",
        "nama", nama
    ))
})

// DELETE - Hapus berdasarkan query param
rute(app, "DELETE", "/api/produk", fungsi(req) {
    buat id = query(req, "id")
    kembalikan ke_json(peta("pesan", "Produk " + id + " dihapus"))
})

tampilkan("API Server: http://localhost:8080")
jalankan_server(app)

Menjalankan Server

Terminal
// Mode interpreter (development)
nusa jalankan api-lengkap.ns

// Mode native binary (production) — LEBIH CEPAT!
nusa kompilasi api-lengkap.ns -o api_server
./api_server
Untuk produksi, selalu gunakan nusa kompilasi agar server berjalan sebagai native binary yang jauh lebih cepat.