ExpressJS - Yönlendirme

Web çerçeveleri, farklı yollarda HTML sayfaları, komut dosyaları, görüntüler vb. Gibi kaynaklar sağlar.

Aşağıdaki işlev, bir Express uygulamasında rotaları tanımlamak için kullanılır -

app.method (yol, işleyici)

Bu YÖNTEM, HTTP fiillerinden herhangi birine uygulanabilir - get, set, put, delete. İstek türünden bağımsız olarak yürütülen alternatif bir yöntem de mevcuttur.

Yol, isteğin çalışacağı yoldur.

İşleyici, ilgili rotada eşleşen bir istek türü bulunduğunda yürütülen bir geri arama işlevidir. Örneğin,

var express = require('express');
var app = express();

app.get('/hello', function(req, res){
   res.send("Hello World!");
});

app.listen(3000);

Uygulamamızı çalıştırıp şu adrese gidersek localhost:3000/hello, sunucu rotada bir alma isteği alır "/hello"Express uygulamamız, callback işlev bu rotaya eklenir ve gönderir "Hello World!" yanıt olarak.

Aynı rotada birden fazla farklı yöntemimiz de olabilir. Örneğin,

var express = require('express');
var app = express();

app.get('/hello', function(req, res){
   res.send("Hello World!");
});

app.post('/hello', function(req, res){
   res.send("You just called the post method at '/hello'!\n");
});

app.listen(3000);

Bu isteği test etmek için terminalinizi açın ve aşağıdaki isteği yerine getirmek için cURL kullanın -

curl -X POST "http://localhost:3000/hello"

Özel bir yöntem, all, aynı işlevi kullanarak belirli bir rotadaki tüm http yöntemlerini işlemek için Express tarafından sağlanır. Bu yöntemi kullanmak için aşağıdakileri deneyin.

app.all('/test', function(req, res){
   res.send("HTTP method doesn't have any effect on this route!");
});

Bu yöntem genellikle, ara yazılım bölümünde tartışacağımız ara yazılımı tanımlamak için kullanılır.

Yönlendiriciler

Rotaları yukarıdaki gibi tanımlamak çok zahmetlidir. Rotaları ana hatlarımızdan ayırmak içinindex.js dosya, kullanacağız Express.Router. Adlı yeni bir dosya oluşturunthings.js ve içine aşağıdakileri yazın.

var express = require('express');
var router = express.Router();

router.get('/', function(req, res){
   res.send('GET route on things.');
});
router.post('/', function(req, res){
   res.send('POST route on things.');
});

//export this router to use in our index.js
module.exports = router;

Şimdi bu yönlendiriciyi index.js, şunu yazın: app.listen işlev çağrısı.

var express = require('Express');
var app = express();

var things = require('./things.js');

//both index.js and things.js should be in same directory
app.use('/things', things);

app.listen(3000);

app.use rota üzerinde fonksiyon çağrısı '/things' ekler thingsbu rotaya sahip yönlendirici. Artık uygulamamızın '/ things' alanında aldığı istekler, things.js yönlendiricimiz tarafından ele alınacaktır. '/'Things.js içindeki rota, aslında '/ things' öğesinin bir alt rotasıdır. Localhost'u ziyaret edin: 3000 / things / ve aşağıdaki çıktıyı göreceksiniz.

Yönlendiriciler endişeleri ayırmada ve kodumuzun ilgili kısımlarını bir arada tutmada çok faydalıdır. Sürdürülebilir kod oluşturmaya yardımcı olurlar. Bir varlıkla ilgili rotalarınızı tek bir dosyada tanımlamalı ve yukarıdaki yöntemi kullanarakindex.js dosya.