NodeJS Rest Service Routing

Toprak Erzurumluoğlu
2 min readOct 8, 2020

--

Merhaba,

Kısacık bir yazı ile NodeJS Restful Serviste routing nasıl yaparız ondan bahsedeceğim.

https://danielpecos.com/2017/09/06/rest-api-with-node-js-and-swagger/

Aşağıdaki gibi bir api oluşturdum.

const express = require('express');
const app = express();
const port = 8080;
app.get('/user',(req,res) => {
res.status(200).send('Hello! User end point is working!');
});
app.get('/post',(req,res) => {
res.status(200).send('Hello! Post end point is working!');
});
app.listen(port);

Gördüğünüz gibi “localhost:8080” ' den yayında olan; “/user”, “/post” diye iki adet rotası olan bir apimiz var.

http:localhost:8080/user

http:localhost:8080/post

Şimdi bu farklı amaçlı iki rotayı birbirinden ayıralım.

routes adında bir klasör oluşturuyorum. Altında iki adet rotalarım, bir adet de bunları export edeceğim toplam üç adet dosya oluşturuyorum.

routes/user.routes.jsconst express = require('express');
const router = express.Router({ mergeParams: true });
router.route('/user').get(
(req,res) => {
res.status(200).send('Hello! User end point is working!');
}
);
module.exports = router;
routes/post.routes.jsconst express = require('express');
const router = express.Router({ mergeParams: true });
router.route('/post').get(
(req,res) => {
res.status(200).send('Hello! Post end point is working!');
}
);
module.exports = router;
routes/index.jsexports.userRouter = require('./user.routes');
exports.postRouter = require('./post.routes');

Bu oluşturduğum rotaları da şimdi main dosyamızda kullanalım.

const express = require('express');
const { postRouter, userRouter } = require('./routes');

const app = express();
const port = 8080;app.use('/',[
postRouter,
userRouter
]);
app.listen(port);

Bu şekilde rotaları hem ana server dosyamızdan hem de birbirinden ayırmış olduk.

İstersek

app.use('/api',[
router.postRouter,
router.userRouter
]);

şeklinde yazarak rotamızı şu hale getirebiliriz.

http:localhost:8080/api/user

http:localhost:8080/api/post

--

--

No responses yet