Web uygulamaları geliştirmek için güçlü ve esnek bir çatıya ihtiyaç duyuyorsanız, Express.js tam size göre. Bu yazıda, Express.js'in ne olduğunu, güçlü ve zayıf yönlerini, Node.js tabanlı alternatiflerini, diğer web sunucuları ve çatılarıyla karşılaştırmalarını ve çok daha fazlasını detaylıca ele alacağız. Ayrıca, gerçek dünya uygulamalarında nasıl kullanabileceğinizi göstermek için kod örneklerine de yer vereceğiz.
Express.js, Node.js tabanlı minimalist bir web uygulama çatısıdır. HTTP sunucusu ve işlem yönetimi sağlayarak web uygulamalarının geliştirilmesini kolaylaştırır. Express.js, yönlendirme (routing), şablon motorları entegrasyonu, HTTP isteği ve yanıt yönetimi gibi temel web uygulama işlevlerini sağlayan zengin bir API'ye sahiptir. Bu özellikleri sayesinde hızlı, esnek ve ölçeklenebilir web uygulamaları geliştirmek için tercih edilir.
Başlamak için Node.js ve npm'in sisteminizde kurulu olduğundan emin olun. Yeni bir proje başlatmak için aşağıdaki adımları izleyin:
mkdir myapp
cd myapp
npm init -y
npm install express
Projenizin kök dizininde app.js adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Merhaba Dünya!');
});
app.listen(port, () => {
console.log(`Sunucu http://localhost:${port} adresinde çalışıyor`);
});
Sunucuyu başlatmak için terminalden aşağıdaki komutu çalıştırın:
node app.js
Tarayıcınızdan http://localhost:3000 adresine gidin ve "Merhaba Dünya!" mesajını görün.
API (Application Programming Interface), bir yazılım uygulamasının başka bir yazılım tarafından kullanılabilmesi için sunduğu arayüzdür. Basitçe açıklamak gerekirse, API bir yazılımın diğer yazılımlarla iletişim kurmasını sağlayan bir set veya kurallar bütünüdür.
Örneğin, bir web sitesindeki hava durumu bilgilerini gösteren bir widget düşünelim. Bu widget, hava durumu verilerini bir hava durumu servisinden alır. Servis, bir API üzerinden bu verilere erişim sağlar. Widget, API'yi kullanarak hava durumu verilerini alır, bu verileri işler ve web sitesinde gösterir.
Express.js ile basit bir RESTful API oluşturmak oldukça kolaydır. Aşağıdaki örnekte, kullanıcı ekleme, güncelleme ve silme işlemlerini de içeren bir API oluşturacağız:
Öncelikle, gerekli paketleri kurarak proje yapımızı oluşturalım:
mkdir myapp
cd myapp
npm init -y
npm install express body-parser fs
Proje kök dizininde users.json adında bir dosya oluşturun ve aşağıdaki başlangıç verilerini ekleyin:
[
{ "id": 1, "name": "Ali" },
{ "id": 2, "name": "Ayşe" },
{ "id": 3, "name": "Mehmet" }
]
Proje kök dizininde app.js adında bir dosya oluşturun ve aşağıdaki kodları ekleyin:
const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');
const app = express();
const port = 3000;
app.use(bodyParser.json());
// Kullanıcıları JSON dosyasından oku
const readUsersFromFile = () => {
const data = fs.readFileSync('users.json');
return JSON.parse(data);
};
// Kullanıcıları JSON dosyasına yaz
const writeUsersToFile = (users) => {
fs.writeFileSync('users.json', JSON.stringify(users, null, 2));
};
// Tüm kullanıcıları listele
app.get('/api/users', (req, res) => {
const users = readUsersFromFile();
res.json(users);
});
// Belirli bir kullanıcıyı getir
app.get('/api/users/:id', (req, res) => {
const users = readUsersFromFile();
const user = users.find(u => u.id === parseInt(req.params.id));
if (user) {
res.json(user);
} else {
res.status(404).send('Kullanıcı bulunamadı');
}
});
// Yeni kullanıcı ekle
app.post('/api/users', (req, res) => {
const users = readUsersFromFile();
const newUser = {
id: users.length ? users[users.length - 1].id + 1 : 1,
name: req.body.name
};
users.push(newUser);
writeUsersToFile(users);
res.status(201).json(newUser);
});
// Kullanıcı güncelle
app.put('/api/users/:id', (req, res) => {
const users = readUsersFromFile();
const index = users.findIndex(u => u.id === parseInt(req.params.id));
if (index !== -1) {
users[index].name = req.body.name;
writeUsersToFile(users);
res.json(users[index]);
} else {
res.status(404).send('Kullanıcı bulunamadı');
}
});
// Kullanıcı sil
app.delete('/api/users/:id', (req, res) => {
let users = readUsersFromFile();
const newUsers = users.filter(u => u.id !== parseInt(req.params.id));
if (users.length !== newUsers.length) {
writeUsersToFile(newUsers);
res.send('Kullanıcı silindi');
} else {
res.status(404).send('Kullanıcı bulunamadı');
}
});
app.listen(port, () => {
console.log(`API sunucusu http://localhost:${port} adresinde çalışıyor`);
});
Sunucunuzu başlatmak için terminalde aşağıdaki komutu çalıştırın:
node app.js
Bu örnek, Express.js kullanarak nasıl kapsamlı bir RESTful API oluşturabileceğinizi göstermektedir. Express.js'in esnek yapısı ve güçlü özellikleri sayesinde, ihtiyaçlarınıza uygun web uygulamaları ve API'ler geliştirmek oldukça kolaydır. Bu yazıda verilen bilgiler ve kod örnekleri ile Express.js hakkında derinlemesine bir anlayışa sahip oldunuz.
Tarayıcınızda veya Postman gibi bir API istemcisi kullanarak API'nizi test edebilirsiniz:
Express.js, web uygulamalarının hızlı bir şekilde geliştirilmesini sağlayan çeşitli güçlü özelliklere sahiptir:
Middleware, HTTP isteklerini işlemek ve yanıt vermek için araya giren işlevlerdir. Aşağıda, basit bir middleware örneği bulunmaktadır:
app.use((req, res, next) => {
console.log('Bir istek alındı:', req.method, req.url);
next();
});
app.get('/', (req, res) => {
res.send('Merhaba Dünya!');
});
Bu middleware, her istek alındığında konsola bir mesaj yazacak ve ardından isteğin işlenmeye devam etmesini sağlayacaktır.
Express.js'in bazı zayıf yanları da vardır:
Node.js tabanlı başka web uygulama çatıları da bulunmaktadır:
Express.js dışında popüler web sunucuları ve çatılar da mevcuttur:
Express.js, web uygulamaları geliştirmek için güçlü, esnek ve hızlı bir çözümdür. Bu yazıda, Express.js'in ne olduğunu, güçlü ve zayıf yönlerini, alternatiflerini ve diğer web sunucuları ile karşılaştırmalarını detaylıca ele aldık. Ayrıca, çeşitli kod örnekleriyle Express.js'in nasıl kullanılacağını gösterdik.