আমি আমার এক্সপ্রেস / নোড সার্ভারে একটি 404 ত্রুটি অনুকরণ করতে চাই। আমি এটা কিভাবে করবো?
আমি আমার এক্সপ্রেস / নোড সার্ভারে একটি 404 ত্রুটি অনুকরণ করতে চাই। আমি এটা কিভাবে করবো?
উত্তর:
আজকাল রেসপন্স অবজেক্টে এর জন্য একটি ডেডিকেটেড status
ফাংশন রয়েছে । আপনি কল করার আগে কোথাও এটি চেইন করুন send
।
res.status(404) // HTTP status 404: NotFound
.send('Not found');
res.status(404).render('error404')
res.status(404);
না যে এএফাইককে একটি প্রতিক্রিয়া পাঠাবে। এটি হয় কিছু দিয়ে শৃঙ্খলিত করা দরকার, উদাহরণস্বরূপ res.status(404).end();
বা আপনার দ্বিতীয় উদাহরণ, বা এটি অনুসরণ করা দরকার উদাহরণস্বরূপ res.end();
,res.send('Not found');
res.sendStatus(404)
res.send(404)
এক্সপ্রেসের পুরানো সংস্করণ হিসাবে ব্যবহার না করে নতুন পদ্ধতিটি হ'ল:
res.sendStatus(404);
এক্সপ্রেস "পাওয়া যায়নি" পাঠ্যের সাহায্যে খুব বেসিক 404 টি প্রতিক্রিয়া প্রেরণ করবে:
HTTP/1.1 404 Not Found
X-Powered-By: Express
Vary: Origin
Content-Type: text/plain; charset=utf-8
Content-Length: 9
ETag: W/"9-nR6tc+Z4+i9RpwqTOwvwFw"
Date: Fri, 23 Oct 2015 20:08:19 GMT
Connection: keep-alive
Not Found
res.status(404)
না res.sendStatus(404)
।
res.sendStatus(404)
সঠিক. এটি সমতুল্যres.status(404).send()
res.sendStatus(404);
সমান res.status(404).send('Not Found')
আপনি এটি অনুকরণ করতে হবে না। res.send
আমি বিশ্বাস করি যে দ্বিতীয় যুক্তি হল স্থিতি কোড। এই যুক্তিতে কেবল 404 পাস করুন।
আমাকে এটি স্পষ্ট করতে দাও: এক্সপ্রেস.আর.আর্গ.তে নথিপত্র অনুসারে মনে হয় কোনও সংখ্যা পাস হয়েছে passedres.send()
স্থিতি কোড হিসাবে ব্যাখ্যা হবে। প্রযুক্তিগতভাবে আপনি এর সাথে পালাতে পারেন:
res.send(404);
সম্পাদনা: আমার খারাপ, আমি এর res
পরিবর্তে বোঝাতে চাইছি req
। এটি প্রতিক্রিয়া বলা উচিত
সম্পাদনা: এক্সপ্রেস 4 হিসাবে, send(status)
পদ্ধতিটি অবচয় করা হয়েছে। আপনি যদি 4 বা তার পরে এক্সপ্রেস ব্যবহার করেন তবে res.sendStatus(404)
পরিবর্তে : ব্যবহার করুন। (মন্তব্যে টিপটির জন্য ধন্যবাদ @ ব্যাডসিসি)
res.send(404, "Could not find ID "+id)
.status(404).send('Not found')
নীচে পোস্ট করা সাইট অনুসারে আপনি নিজের সার্ভারটি সেট আপ করবেন এটিই। একটি উদাহরণ তারা দেখায় তা হ'ল:
var http = require("http");
var url = require("url");
function start(route, handle) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
route(handle, pathname, response);
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
এবং তাদের রুট কার্য:
function route(handle, pathname, response) {
console.log("About to route a request for " + pathname);
if (typeof handle[pathname] === 'function') {
handle[pathname](response);
} else {
console.log("No request handler found for " + pathname);
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not found");
response.end();
}
}
exports.route = route;
এটি এক উপায়। http://www.nodebeginner.org/
অন্য সাইট থেকে, তারা একটি পৃষ্ঠা তৈরি করে এবং তারপরে এটি লোড করে। এটি আপনি যা খুঁজছেন তার থেকেও বেশি কিছু হতে পারে।
fs.readFile('www/404.html', function(error2, data) {
response.writeHead(404, {'content-type': 'text/html'});
response.end(data);
});
এক্সপ্রেস সাইট থেকে একটি নটফাউন্ড ব্যতিক্রম সংজ্ঞায়িত করুন এবং যখনই আপনি একটি 404 পৃষ্ঠা পেতে চান বা নীচের ক্ষেত্রে / 404 এ পুনর্নির্দেশ করতে চান তখন নিক্ষেপ করুন:
function NotFound(msg){
this.name = 'NotFound';
Error.call(this, msg);
Error.captureStackTrace(this, arguments.callee);
}
NotFound.prototype.__proto__ = Error.prototype;
app.get('/404', function(req, res){
throw new NotFound;
});
app.get('/500', function(req, res){
throw new Error('keyboard cat!');
});
app.use(function(err, res, res, next) { if (err.message.indexOf('NotFound') !== -1) { res.status(400).send('Not found dude'); }; /* else .. etc */ });
আইএমও এর সর্বোত্তম উপায় হল next()
ফাংশনটি ব্যবহার করা :
router.get('/', function(req, res, next) {
var err = new Error('Not found');
err.status = 404;
return next(err);
}
তারপরে ত্রুটিটি আপনার ত্রুটি হ্যান্ডলার দ্বারা পরিচালনা করা হয় এবং আপনি HTML ব্যবহার করে ত্রুটিটি সুন্দরভাবে স্টাইল করতে পারেন style