এক্সপ্রেসে কীভাবে ইউআরএল প্যারামিটার পাবেন?


290

আমি tagidআমার ইউআরএল থেকে মান পেতে একটি সমস্যার মুখোমুখি :localhost:8888/p?tagid=1234

আমার নিয়ামক কোডটি সংশোধন করতে আমাকে সহায়তা করুন। আমি tagidমান পেতে সক্ষম নই ।

আমার কোডটি নিম্নরূপ:

app.js:

var express = require('express'),
  http = require('http'),
  path = require('path');
var app = express();
var controller = require('./controller')({
  app: app
});

// all environments
app.configure(function() {
  app.set('port', process.env.PORT || 8888);
  app.use(express.json());
  app.use(express.urlencoded());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
  app.set('view engine', 'jade');
  app.set('views', __dirname + '/views');
  app.use(app.router);
  app.get('/', function(req, res) {
    res.render('index');
  });
});
http.createServer(app).listen(app.get('port'), function() {
  console.log('Express server listening on port ' + app.get('port'));
});

Controller/index.js:

function controller(params) {
  var app = params.app;
  //var query_string = request.query.query_string;

  app.get('/p?tagId=/', function(request, response) {
    // userId is a parameter in the url request
    response.writeHead(200); // return 200 HTTP OK status
    response.end('You are looking for tagId' + request.route.query.tagId);
  });
}

module.exports = controller;

routes/index.js:

require('./controllers');
/*
 * GET home page.
 */

exports.index = function(req, res) {
  res.render('index', {
    title: 'Express'
  });
};

13
এক্সপ্রেসে, /p?tagid=1234ট্যাগিডকে কোয়েরি স্ট্রিং বলা হয় , ইউআরএল প্যারামিটার নয়। একটি URL প্যারামিটার হবে /p/:tagId
মাইকম্যাকানা

উত্তর:


704

এক্সপ্রেস 4.x

ইউআরএল প্যারামিটারের মান পেতে, req.params ব্যবহার করুন

app.get('/p/:tagId', function(req, res) {
  res.send("tagId is set to " + req.params.tagId);
});

// GET /p/5
// tagId is set to 5

আপনি যদি কোনও কোয়েরি প্যারামিটার পেতে চান ?tagId=5তবে পুনরায় জিজ্ঞাসাটি ব্যবহার করুন

app.get('/p', function(req, res) {
  res.send("tagId is set to " + req.query.tagId);
});

// GET /p?tagId=5
// tagId is set to 5

এক্সপ্রেস 3.x

ইউআরএল প্যারামিটার

app.get('/p/:tagId', function(req, res) {
  res.send("tagId is set to " + req.param("tagId"));
});

// GET /p/5
// tagId is set to 5

ক্যোয়ারী প্যারামিটার

app.get('/p', function(req, res) {
  res.send("tagId is set to " + req.query("tagId"));
});

// GET /p?tagId=5
// tagId is set to 5

আপনি এক্সপ্রেসের কোন সংস্করণ ব্যবহার করছেন? আমি কেবল এটি পরীক্ষা করেছি express-3.4.4এবং এটি ঠিক কাজ করে।
maček

/p/5আপনি শীর্ষ সমাধানটি ব্যবহার করছেন, বা /p?tagId=5আপনি নীচের সমাধানটি ব্যবহার করছেন কিনা তা মনে রাখবেন ।
maček

শীর্ষ সমাধানটি (/ পি / 5) আমার জন্য নিখুঁতভাবে কাজ করে..কিন্তু নীচে এক / পি? ট্যাগআইডি = 5 আমাকে ত্রুটি দেয় "ট্যাগআইডি সেট করে দেওয়া হয় না"
ব্যবহারকারী 2834795

2
ধন্যবাদ অনেকটা ম্যাসেক.আপনি আমার সময় বাঁচান t এটি আমার ভুল ছিল, আমি আপনার মতে সব করেছি তবে ইউআরএল থেকে আমি "ট্যাগআইডি" ব্যবহার না করে "ট্যাগিড" ব্যবহার করছিলাম।
ব্যবহারকারী 2834795

11
req.param()হয় অবচিত : Use either req.params, req.body or req.query, as applicable.নামে রুট "পরামিতি" (উদাঃ জন্য /p/:tagId) ব্যবহার req.params। ক্যোয়ারী স্ট্রিং (যেমন জন্য /p?tagId=5) ব্যবহার req.query
নাটোয়ামি

20

আপনি যেমন কিছু করতে পারেন req.param('tagId')


1
এই পদ্ধতিটি অবচয় করা হয়েছে। পরিবর্তে req.query ব্যবহার করুন।
alextc

4
@alextc req.queryএবং req.paramsতাই বিভিন্ন জিনিস, জন্য প্রতিস্থাপন req.param('x')হয় req.params.xreq.query না।
আল-মোতাহাফার

12

আপনি যদি URL এ ক্যোয়ারীর প্যারামিটার মানটি ধরতে চান তবে নীচের কোড টুকরা অনুসরণ করুন

//url.localhost:8888/p?tagid=1234
req.query.tagid
OR
req.param.tagid

আপনি যদি এক্সপ্রেস প্যারাম ফাংশনটি ব্যবহার করে URL প্যারামিটার দখল করতে চান

নির্দিষ্ট পরামিতিটি ধরতে প্যারাম ফাংশন প্রকাশ করুন। এটি মিডওয়্যার হিসাবে বিবেচিত হয় এবং রুটটি বলার আগে চলবে।

এটি বৈধতা বা আইটেম সম্পর্কে গুরুত্বপূর্ণ তথ্য দখল জন্য ব্যবহার করা যেতে পারে।

এর উদাহরণ হ'ল:

// parameter middleware that will run before the next routes
app.param('tagid', function(req, res, next, tagid) {

// check if the tagid exists
// do some validations
// add something to the tagid
var modified = tagid+ '123';

// save name to the request
req.tagid= modified;

next();
});

// http://localhost:8080/api/tags/98
app.get('/api/tags/:tagid', function(req, res) {
// the tagid was found and is available in req.tagid
res.send('New tag id ' + req.tagid+ '!');
});

5

আপনার রুটটি দেখতে দেখতে এটি কাজ করবে: localhost:8888/p?tagid=1234

var tagId = req.query.tagid;
console.log(tagId); // outputs: 1234
console.log(req.query.tagid); // outputs: 1234

অন্যথায় নীচের কোডটি ব্যবহার করুন যদি আপনার রুটটি এমন দেখাচ্ছে: localhost:8888/p/1234

var tagId = req.params.tagid;
console.log(tagId); // outputs: 1234
console.log(req.params.tagid); // outputs: 1234

2
সাধারণত লোকেরা এর মতো ইউআরএল তৈরি করে না/p/:tagid=1234
অঙ্কুর লরিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.