Lewati ke konten

Responses

Response Gaman disini kita memakai fungsi Res, anda tidak perlu mengimport nya terlebih dahulu dikarenakan fungsi Res disini sudah menjadi fungsi global jadi bisa anda pakai dimana saja.

Import kelas Response dan gunakan dalam handler route Anda:

(ctx) => {
return Res.json({ message: "Halo Dunia" }, { status: 200 });
};

FYI: Response status bisa sorthand seperti ini

(ctx) => {
return Res.json({ message: "Bad Request" }, 403); // langsung masukin status number
};

Mengembalikan respons JSON dengan Content-Type: application/json.

(ctx) => {
return Res.json({
user: { id: 1, name: "Angga" },
status: "success",
});
};
// Dengan opsi kustom
(ctx) => {
return Res.json(
{ error: "Tidak ditemukan" },
{ status: 404, headers: { "X-Custom": "value" } }
);
};

Mengembalikan respons teks biasa dengan Content-Type: text/plain.

(ctx) => {
return Res.text("Halo, Dunia!");
};
// Dengan status kustom
(ctx) => {
return Res.text("Kesalahan Server", { status: 500 });
};

Mengembalikan respons HTML dengan Content-Type: text/html.

(ctx) => {
return Res.html(`
<html>
<body>
<h1>Selamat Datang</h1>
<p>Halo dari GamanJS!</p>
</body>
</html>
`);
};
// Dengan header kustom
(ctx) => {
return Res.html("<h1>Halaman Kustom</h1>", {
status: 201,
headers: { "X-Frame-Options": "DENY" },
});
};

Merender template menggunakan view engine yang telah dikonfigurasi. Memerlukan pengaturan integrasi view engine terlebih dahulu.

(ctx) => {
return Res.render("home", {
title: "Selamat Datang",
user: { name: "Angga" },
});
};
// Dengan status kustom
(ctx) => {
return Res.render("error", { message: "Halaman tidak ditemukan" }, { status: 404 });
};

Mengembalikan respons streaming dengan Content-Type: application/octet-stream.

import { createReadStream } from "fs";
(ctx) => {
const fileStream = createReadStream("./file-besar.pdf");
return Res.stream(fileStream);
};
// Dengan tipe konten kustom
(ctx) => {
const videoStream = createReadStream("./video.mp4");
return Res.stream(videoStream, {
headers: { "Content-Type": "video/mp4" },
});
};

Mengembalikan respons redirect. Status default adalah 302 (redirect sementara).

(ctx) => {
return Res.redirect("/login");
};
// Redirect permanen (301)
(ctx) => {
return Res.redirect("/url-baru", 301);
};
// Redirect sementara (302) - eksplisit
(ctx) => {
return Res.redirect("/dashboard", 302);
};

Metode singkat untuk menyelesaikan permintaan dengan kode status 200.

ctx => {
return Res.ok({ message: "OK" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 201.

ctx => {
return Res.created({ message: "Created" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 202.

ctx => {
return Res.accepted({ message: "Accepted" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 203.

ctx => {
return Res.nonAuthoritativeInformation({ message: "Non Authoritative Information" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 204 tanpa konten.

ctx => {
return Res.noContent()
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 205 tanpa konten.

ctx => {
return Res.resetContent()
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 206.

ctx => {
return Res.partialContent({ message: "Partial Content" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 300.

ctx => {
return Res.multipleChoices({ message: "Multiple Choices" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 301.

ctx => {
return Res.movedPermanently({ message: "Moved Permanently" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 302.

ctx => {
return Res.movedTemporarily({ message: "Moved Temporarily" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 303.

ctx => {
return Res.seeOther({ message: "See Other" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 304.

ctx => {
return Res.notModified({ message: "Not Modified" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 305.

ctx => {
return Res.useProxy({ message: "Use Proxy" })
}

Metode singkat untuk menyelesaikan permintaan dengan kode status 307.

ctx => {
return Res.temporaryRedirect({ message: "Temporary Redirect" })
}

(dst bisa dilanjutkan untuk semua kode 4xx dan 5xx dengan format sama)

Sistem Response GamanJS memberikan kenyamanan dan fleksibilitas, memungkinkan Anda memilih antara metode respons eksplisit dan shortcut otomatis sesuai kebutuhan Anda.