Setup Express.js dan TypeScript
Instalasi
Inisialisasi Project
Kita perlu menjalankan perintah ini npm init -y
. Untuk membuat inisialisasi dari project.
npm init -y
Init the tsconfig
Pastikan kamu sudah meng-install library TypeScript
secara global, jika belum bisa jalankan perintah berikut,
sudo npm i -g typescript
Jika sudah, kita bisa mengecek apakah sudah ter-install dengan menjalankan,
tsc -v
Kemudian, baru kita bisa melakukan inisialisasi (init) untuk tsconfig
.
tsc --init
Setup tsconfig
dan buat folder src
Buka file tsconfig.json
, kemudian lakukan seperti berikut, cari rootDir
lalu isikan,
"rootDir": "./src"
Selanjutnya, buat folder src
di dalam src
buat file index.ts
.
Install Nodemon dan ts-node
npm i -D nodemon ts-node
Kemudian, atur pada package.json
di scripts
buat baru seperti berikut,
"scripts": {
"dev": "nodemon src/index.ts"
}
Install Express
npm i express
Lalu, coba import library Express yang sudah di-install, import express from "express"
. Di sana menunjukkan belum bisa digunakan karena kita belum install untuk TypeScript
. Jalankan perintah di bawah ini untuk install @types/express
.
npm i -D @types/express
Handling Header
Buat file index.ts
di dalam folder src
. Kemudian tambahkan script untuk handling header.
import express, { Request, Response, NextFunction } from "express";
const app = express();
const port = 8000; // port yang nanti digunakan untuk menjalankan server
// Middleware untuk menambahkan header ke semua respons
app.use((req: Request, res: Response, next: NextFunction) => {
res.setHeader("Express.js dan TypeScript", "|", "Devscale Indonesia");
next();
});
Handling Body
Contoh handling body untuk menampilkan pesan method
get
.
// Route untuk menangani permintaan GET
app.get("/", (req: Request, res: Response) => {
res.json({
message: "Belajar Express.js dan TypeScript di Bootcamp Devscale Indonesia",
});
});
Contoh handling body untuk menampilkan nama dan umur dengan method
post
.
// Route untuk menangani permintaan POST
app.post("/data", (req: Request, res: Response) => {
const { name, age } = req.body;
if (!name || !age) {
return res.json({ error: "Nama dan umur diperlukan" });
}
res.json({ message: `Data diterima: ${name}, ${age}` });
});
Contoh kasus jika router/rute tidak ditemukan.
// Penanganan rute yang tidak ditemukan
app.use((req: Request, res: Response) => {
res.json({ error: "Rute tidak ditemukan" });
});
Status
Kamu dapat menambahkan status
dari handling body yang sudah kamu buat sebelumnya.
Contoh pada handling body method
get
. Tambahkanstatus(200)
yang artinya OK atau permintaan yang dilakukan oleh client telah berhasil diproses oleh server.
// Route untuk menangani permintaan GET
app.get("/", (req: Request, res: Response) => {
res.status(200).json({
message: "Belajar Express.js dan TypeScript di Bootcamp Devscale Indonesia",
});
});
Contoh pada handling body method
post
. Tambahkanstatus(400)
danstatus(200)
. Status400
(Bad Request) yang artinya server tidak dapat memproses permintaan dari client karena terdapat kesalahan pada permintaan.
// Route untuk menangani permintaan POST
app.post("/data", (req: Request, res: Response) => {
const { name, age } = req.body;
if (!name || !age) {
return res.status(400).json({ error: "Nama dan umur diperlukan" });
}
res.status(201).json({ message: `Data diterima: ${name}, ${age}` });
});
Contoh pada handling body router/rute yang tidak ditemukan. Tambahkan
status(404)
. Status400
(Not Found) yang artinya server tidak dapat menemukan konten yang diminta oleh client.
// Penanganan rute yang tidak ditemukan
app.use((req: Request, res: Response) => {
res.status(404).json({ error: "Rute tidak ditemukan" });
});
Dan masih banyak HTTP status-status codes
yang lain.
Menjalankan Server/Proyek
app.listen(port, () => {
console.log(`Server berjalan di http://localhost:${port}`);
});
Kemudian, jalankan perintah,
npm run dev // using npm
pnpm dev // using pnpm
Lalu, buka http://locahost:8000 dan tambahkan /data
untuk membuka halaman data http://locahost:8000/data di website kamu.