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.
Görev
Kolayserver.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şı.
routes/recipes.jsiçinde,/tagsrotasının altınaserver.jsdosyası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/recipeskısmını çıkar:/api/recipes/:id,/:idolur ve liste rotası/olur.- Bu rotaları
/tagsrotasının altında tut. Express rotaları sırayla dener ve önce yerleştirilen/:id,/tagsyolunu yakalayıptagsid'sine sahip bir tarif arar. - Bu dört rotayı
server.jsdosyasından sil. server.jsiçinde yönlendiriciyi./routes/recipes.jsdosyasından içe aktar ve dört rotanın bulunduğu yere,express.json()sonrasına ve 404 işleyicisinden öncesine,app.useile/api/recipesyoluna 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;
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