Menu
CoddyTech

Express Yönlendiricisi

Coddy'nin Node.js Journey'sinin Express Temelleri bölümünün bir parçası. Ders 19 / 23.

server.js artık sayfaları, API rotalarını ve ara yazılımları barındırıyor ve büyümeye devam ediyor.

// routes/books.js
const router = express.Router();
router.get('/', (req, res) => res.json(books));
router.get('/:isbn', (req, res) => res.json(findBook(req.params.isbn)));
export default router;

// server.js
app.use('/api/books', booksRouter);

express.Router(), kendi rotaları olan ve kendi dosyasında tutulan küçük bir uygulama oluşturur. app.use('/api/books', booksRouter) onu bağlar: yönlendiricinin / rotası GET /api/books isteğini, /:isbn rotası ise GET /api/books/9780141439518 isteğini yanıtlar. Önek, app.use içinde bir kez yazılır. Yönlendiricinin içinde ortaya çıkan hatalar yine uygulamanın hata işleyicisine ulaşır.

Yeni routes/recipes.js dosyasında şimdiden bir rota, /tags bulunuyor.

challenge icon

Görev

Kolay

server.js büyümeye devam ediyor. Tarif API'sini, her etiketi listeleyen bir rotanın zaten bulunduğu routes/recipes.js adlı kendi dosyasına taşı.

  1. routes/recipes.js içinde, /tags rotasının altına server.js dosyasındaki dört API rotasını ekle: liste, id'sine göre tek bir tarif, tarif ekleyen POST rotası ve ölçeklendirme rotası. Bir yönlendiricinin içinde her yolun /api/recipes kısmını çıkar: /api/recipes/:id, /:id olur ve liste rotası / olur.
  2. Bu rotaları /tags rotasının altında tut. Express rotaları sırayla dener ve önce yerleştirilen /:id, /tags yolunu yakalayıp tags id'sine sahip bir tarif arar.
  3. Bu dört rotayı server.js dosyasından sil.
  4. server.js içinde yönlendiriciyi ./routes/recipes.js dosyasından içe aktar ve dört rotanın bulunduğu yere, express.json() sonrasına ve 404 işleyicisinden öncesine, app.use ile /api/recipes yoluna bağla.

Dene: “Oyna”ya bas ve /api/recipes/tags isteğini gönder. ["breakfast","dinner","soup","sweet","vegan"] sonucunu görmelisin. /api/recipes/2 isteğini gönder: önceden olduğu gibi Pancakes tarifi gelir. {"title": "Toast"} içeriğini /api/recipes adresine POST et: durum kodu 201. Ardından /api/recipes/5/scale?by=2 isteğini gönder: durum kodu 500 ve {"error":"Something went wrong"} gelir; böylece yönlendiricinin içinde fırlatılan hatalar hâlâ hata işleyicine ulaşır. URL'ler değişmedi; yalnızca kodun bulunduğu yer değişti.

Kendin dene

import express from 'express';
import { recipes } from '../data.js';

const router = express.Router();

// Her etiket, birer kez, alfabetik sırayla.
router.get('/tags', (req, res) => {
    const tags = new Set(recipes.flatMap((recipe) => recipe.tags));
    res.json([...tags].sort());
});

// /api/recipes rotalarını server.js dosyasından buraya, /tags altına taşıyın.
// Bir router içinde yollar, router'ın bağlandığı konuma görelidir.

export default router;
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Express Temelleri bölümündeki tüm dersler

Kendi başına pratik yap: Express playground