একেবারেই ব্যবহার না করাই ভাল! আমি ব্যাখ্যা করি, এবং এটি আমি এটিরও ব্যাখ্যা করি।
পরবর্তী () ফাংশন যার কোনও নাম থাকতে পারে এবং কনভেনশন অনুসারে পরবর্তীতে সেট করা হয়েছে। এটি অপ্রত্যক্ষভাবে অপারেশনগুলির সাথে সম্পর্কিত (পুট, জিইটি, ডিলেট, ...) যা সাধারণত একই ইউআরআই উত্সে সঞ্চালিত হয় উদাহরণস্বরূপ/ user /: id
app.get('/user/:id', function (req,res,next)...)
app.put('/user/:id', function (req,res,next)...)
app.delete('/user/:id', function (req,res,next)...)
app.post('/user/', function ()...)
এখন আপনি যদি app.get, app.put এবং app.delete এ একই ইউরি (/ ব্যবহারকারী /: আইডি) ব্যবহার করেন তবে তাদের বাস্তবায়ন হ'ল একমাত্র জিনিস। যখন অনুরোধটি করা হয় (পুনরায়) এক্সপ্রেসটি অ্যাপ্লিকেশনটিতে প্রথমে রেকটিকে রাখে, আপনি যে কোনও বৈধতা তৈরি করেছেন কারণ সেই অনুরোধটি যে নিয়ন্ত্রকের জন্য ব্যর্থ হয় না, এটি অ্যাপ্লিকেশনকে পুনরায় রেকর্ড করে দেয় যা পরবর্তী ফাইলের ফাইল হয় চালু. নীচের উদাহরণে দেখা যায়।
app.get('/user/:id', function (req,res,next){
if(req.method === 'GET')
//whatever you are going to do
else
return next() //it passes the request to app.put
//Where would GET response 404 go, here? or in the next one.
// Will the GET answer be handled by a PUT? Something is wrong here.
})
app.put('/user/:id', function (req,res,next){
if(req.method === 'PUT')
//whatever you are going to do
else
return next()
})
সমস্যাটি মিথ্যা, শেষ পর্যন্ত আপনি সমস্ত কন্ট্রোলারের কাছে রেকটি শেষ করবেন এই আশায় যে রেকের বৈধতার মাধ্যমে আপনি যা চান তা করার একটি আছে। সবশেষে সমস্ত কন্ট্রোলার এমন কিছু পান যা তাদের পক্ষে নয় :(।
তো, কিভাবে পরবর্তী () এর সমস্যা এড়ানো যায় ?
উত্তরটি খুব সহজ।
1- একটি উত্স সনাক্ত করার জন্য কেবল একটি ইউরি থাকা উচিত
HTTP: // IpServidor / colection /: সম্পদ / colection /: রিসোর্স যদি আপনার ইউআরআই এর চেয়ে বেশি হয় তবে আপনার নতুন ইউআর তৈরির কথা বিবেচনা করা উচিত
উদাহরণ HTTP: // আইপিএস সার্ভিডর / ব্যবহারকারী / পেপ / পরিচিতি / কন্টাক্টমেন্ট 1
2-এই সংস্থার সমস্ত ক্রিয়াকলাপ HT (ক্রিয়া, পোস্ট, লাগানো, মুছুন, ...) ক্রিয়া ক্রিয়াকলাপের আদর্শের প্রতি শ্রদ্ধাশীল হতে হবে সুতরাং কোনও ইউআরআইতে কল করার জন্য কেবল কল করার এক উপায় আছে
POST http://IpServidor/users/ //create a pepe user
GET http://IpServidor/users/pepe //user pepe returns
PUT http://IpServidor/users/pepe //update the user pepe
DELETE http://IpServidor/users/pepe //remove the user pepe
আরও তথ্য [ https://docs.microsoft.com/es-es/azure/architecture/best-practices/api-design#organize-the-api-around-res উত্স +1]
কোডটি দেখি!কংক্রিট বাস্তবায়ন যা আমাদের পরবর্তী () ব্যবহার এড়াতে দেয়!
Index.js ফাইলটিতে
//index.js the entry point to the application also caller app.js
const express = require('express');
const app = express();
const usersRoute = require('./src/route/usersRoute.js');
app.use('/users', usersRoute );
ব্যবহারকারীরাউইট.জেএস ফাইলটিতে
//usersRoute.js
const express = require('express');
const router = express.Router();
const getUsersController = require('../Controllers/getUsersController.js');
const deleteUsersController = require('../Controllers/deleteUsersController.js');
router.use('/:name', function (req, res) //The path is in /users/:name
{
switch (req.method)
{
case 'DELETE':
deleteUsersController(req, res);
break;
case 'PUT':
// call to putUsersController(req, res);
break;
case 'GET':
getUsersController(req, res);
break;
default:
res.status(400).send('Bad request');
} });
router.post('/',function (req,res) //The path is in /users/
{
postUsersController(req, res);
});
module.exports = router;
এখন ব্যবহারকারীরাউইট.জেএস ফাইল ব্যবহারকারীরাট নামে একটি ফাইল যা প্রত্যাশা করে তা করে যা ইউআরআই / ব্যবহারকারী /
// ফাইল getUserController.js
//getUsersController.js
const findUser= require('../Aplication/findUser.js');
const usersRepository = require('../Infraestructure/usersRepository.js');
const getUsersController = async function (req, res)
{
try{
const userName = req.params.name;
//...
res.status(200).send(user.propertys())
}catch(findUserError){
res.status(findUserError.code).send(findUserError.message)
}
}
module.exports = getUsersController;
এইভাবে আপনি পরবর্তী ব্যবহার এড়াতে পারবেন, আপনি কোডটি দ্বিগুণ করবেন, আপনি কার্য সম্পাদন করবেন, আপনি সোলিড বিকাশ করবেন, আপনি মাইক্রোসার্ভেসিসের সম্ভাব্য মাইগ্রেশনের জন্য দরজাটি উন্মুক্ত রেখে যান এবং সর্বোপরি, একজন প্রোগ্রামার দ্বারা পড়া সহজ।
res.redirect('/')
বনামের মতো একই জিনিস কি সত্য হবেreturn res.redirect('/')
? শিরোনামগুলি প্রেরণের পরে সেটিংয়ের ত্রুটিগুলি এড়ানোর জন্য রেস স্টেটমেন্টগুলির সামনে সর্বদা রিটার্ন লিখতে আরও ভাল?