logo
eng-flag

Express.js Notları ve İpuçları

İçindekiler

  1. Kurulum ve Yükleme
  2. Temel Sunucu
  3. Yönlendirme
  4. Ara Katman Yazılımı
  5. İstek Nesnesi
  6. Yanıt Nesnesi
  7. Statik Dosyalar
  8. Şablon Motorları
  9. Hata Yönetimi
  10. Veritabanı Entegrasyonu

Kurulum ve Yükleme

Express'i Yükleme

npm init -y
npm install express

Temel Sunucu

Temel Sunucu Oluşturma

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`);
});

Yönlendirme

Temel Yönlendirme

app.get('/', (req, res) => {
  res.send('Ana Sayfa');
});

app.post('/gonder', (req, res) => {
  res.send('Form Gönderildi');
});

app.put('/guncelle', (req, res) => {
  res.send('Güncelleme Başarılı');
});

app.delete('/sil', (req, res) => {
  res.send('Silme Başarılı');
});

Rota Parametreleri

app.get('/kullanicilar/:kullaniciId', (req, res) => {
  res.send(`Kullanıcı ID: ${req.params.kullaniciId}`);
});

Rota İşleyicileri

app.route('/kitap')
  .get((req, res) => {
    res.send('Kitap al');
  })
  .post((req, res) => {
    res.send('Kitap ekle');
  })
  .put((req, res) => {
    res.send('Kitap güncelle');
  });

Ara Katman Yazılımı

Uygulama Düzeyinde Ara Katman Yazılımı

app.use((req, res, next) => {
  console.log('Zaman:', Date.now());
  next();
});

Yönlendirici Düzeyinde Ara Katman Yazılımı

const router = express.Router();

router.use((req, res, next) => {
  console.log('Zaman:', Date.now());
  next();
});

app.use('/kullanici', router);

Hata İşleme Ara Katman Yazılımı

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Bir şeyler bozuldu!');
});

Dahili Ara Katman Yazılımı

app.use(express.json()); // application/json ayrıştırması için
app.use(express.urlencoded({ extended: true })); // application/x-www-form-urlencoded ayrıştırması için

Üçüncü Taraf Ara Katman Yazılımı

const morgan = require('morgan');
app.use(morgan('dev'));

İstek Nesnesi

İstek Özellikleri

app.get('/kullanici', (req, res) => {
  console.log(req.method);    // GET
  console.log(req.path);      // /kullanici
  console.log(req.headers);   // istek başlıkları
  console.log(req.query);     // sorgu dizesi parametreleri
  console.log(req.body);      // isteğin gövdesi (body-parser gerektirir)
});

Yanıt Nesnesi

Yanıt Metodları

app.get('/ornek', (req, res) => {
  res.status(200);                   // Durum ayarla
  res.set('Content-Type', 'text/plain');  // Başlıkları ayarla
  res.send('Merhaba Dünya');         // Yanıt gönder
  res.json({ kullanici: 'Ahmet Yılmaz' });    // JSON yanıtı gönder
  res.download('/dosya/yolu');       // Dosyayı ek olarak gönder
  res.redirect('/baska-sayfa');      // Yönlendir
  res.render('index', { baslik: 'Ana Sayfa' }); // Görünümü render et
});

Statik Dosyalar

Statik Dosyaları Sunma

app.use(express.static('public'));

Şablon Motorları

EJS Kurulumu

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
  res.render('index', { baslik: 'Ana Sayfa' });
});

Hata Yönetimi

404 İşleyicisi

app.use((req, res, next) => {
  res.status(404).send("Üzgünüm, bulamadım!");
});

Hata İşleyicisi

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Bir şeyler bozuldu!');
});

Veritabanı Entegrasyonu

MongoDB ile Mongoose

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/uygulamam', { useNewUrlParser: true, useUnifiedTopology: true });

const Kullanici = mongoose.model('Kullanici', { ad: String, email: String });

app.post('/kullanicilar', async (req, res) => {
  const kullanici = new Kullanici(req.body);
  await kullanici.save();
  res.send(kullanici);
});

SQL ile Sequelize

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('veritabani', 'kullaniciadi', 'sifre', {
  host: 'localhost',
  dialect: 'mysql'
});

const Kullanici = sequelize.define('Kullanici', {
  ad: DataTypes.STRING,
  email: DataTypes.STRING
});

app.post('/kullanicilar', async (req, res) => {
  const kullanici = await Kullanici.create(req.body);
  res.send(kullanici);
});

2024 © Tüm hakları saklıdır - buraxta.com