কিভাবে Node.js এ Express.js এ GET(ক্যোয়ারী স্ট্রিং) ভেরিয়েবল পেতে?




query-string (14)

GET পদ্ধতির মাধ্যমে পরামিতি পাস করার 2 টি উপায় রয়েছে

পদ্ধতি 1: এমভিসি পদ্ধতির যেখানে আপনি পরামিতি / রুটিনাম / প্যারামিনাম প্যারামিটারগুলি পাস করেন
এই ক্ষেত্রে আপনি প্যারামিটার মান পেতে req.params.paramname ব্যবহার করতে পারেন উদাহরণস্বরূপ নিচের কোডটি পড়ুন যেখানে আমি একটি প্যারামিটার হিসাবে আইডি প্রত্যাশা করছি
লিঙ্কটি ভালো হতে পারে: http://myhost.com/items/23

var express = require('express');
var app = express();
app.get("items/:id",function(req,res){
var id = req.params.id;
//further operations to perform
});
app.listen(3000);

পদ্ধতি 2: সাধারন পদ্ধতি: '?' ব্যবহার করে ক্যোয়ারী স্ট্রিং হিসাবে ভেরিয়েবলগুলি পাস করা হচ্ছে। অপারেটর
উদাহরণস্বরূপ নিচের কোডটি পড়ুন যেখানে আমি একটি ক্যোয়ারী প্যারামিটার হিসাবে আইডি প্রত্যাশা করছি
লিঙ্কটি ভালো হতে পারে: http://myhost.com/items?id=23

var express = require('express');
var app = express();
app.get("/items",function(req,res){
    var id = req.query.id;
    //further operations to perform
});
app.listen(3000);

আমরা কি Node.js এ ক্যোয়ারী স্ট্রিংয়ের ভেরিয়েবলগুলি পেতে পারি যেমন আমরা তাদের পিএইচপি $_GET তে পেতে পারি?

আমি জানি নোড.জেজে আমরা অনুরোধে ইউআরএল পেতে পারি। প্রশ্ন স্ট্রিং পরামিতি পেতে একটি পদ্ধতি আছে?


Whitequark চমত্কারভাবে সাড়া। কিন্তু Node.js এবং Express.js এর বর্তমান সংস্করণগুলির সাথে এটি আরও একটি লাইন প্রয়োজন। 'প্রয়োজন http' (দ্বিতীয় লাইন) যোগ করতে ভুলবেন না। আমি এখানে একটি পূর্ণাঙ্গ উদাহরণ পোস্ট করেছি যা এই কলটি কীভাবে কাজ করতে পারে তা দেখায়। একবার চালু হলে, আপনার ব্রাউজারে http://localhost:8080/?name=abel&fruit=apple টাইপ করুন, এবং আপনি http://localhost:8080/?name=abel&fruit=apple উপর ভিত্তি করে একটি দুর্দান্ত প্রতিক্রিয়া পাবেন।

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

app.configure(function(){
    app.set('port', 8080);
});

app.get('/', function(req, res){
  res.writeHead(200, {'content-type': 'text/plain'});
  res.write('name: ' + req.query.name + '\n');
  res.write('fruit: ' + req.query.fruit + '\n');
  res.write('query: ' + req.query + '\n');
  queryStuff = JSON.stringify(req.query);
  res.end('That\'s all folks'  + '\n' + queryStuff);
});

http.createServer(app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
})

আপনি ExpressJS সঙ্গে req.params ব্যবহার করতে পারেন

router.get('/recipe/:id', function (req, res, next) {
        database.sendQuery("SELECT * FROM recipe WHERE id = " + req.params.id , function (err, results) {
            if (err) {
                console.log(err)
            } else {
                res.json(results)
            }
        })
    });

আপনি url.parse ব্যবহার করে পরামিতি সংগ্রহ করার জন্য ইউআরএল মডিউল ব্যবহার করতে পারেন

var url = require('url');
var url_data = url.parse(request.url, true);
var query = url_data.query;

Expressjs এটা দ্বারা সম্পন্ন করা হয়,

var id = req.query.id;

উদাহরণ:

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

app.get('/login', function (req, res, next) {
    console.log(req.query);
    console.log(req.query.id); //Give parameter id
});

আপনি এক্সপ্রেস ^ 4.15.4 দিয়ে ব্যবহার করতে পারেন:

var express = require('express'),
    router = express.Router();
router.get('/', function (req, res, next) {
    console.log(req.query);
});

আশাকরি এটা সাহায্য করবে.


আমি [email protected] দিয়ে MEANJS 0.6.0 ব্যবহার করছি, এটি ভাল

ক্লায়েন্ট:

নিয়ন্ত্রক:

var input = { keyword: vm.keyword };
ProductAPi.getOrder(input)

সেবা:

this.getOrder = function (input) {return $http.get('/api/order', { params: input });};

সার্ভার

যাত্রাপথ

app.route('/api/order').get(products.order);

নিয়ামক

exports.order = function (req, res) {
  var keyword = req.query.keyword
  ...

একটি ছোট Node.js HTTP সার্ভার পোর্ট 9080 এ শোনাচ্ছে, GET বা POST তথ্য বিশ্লেষণ করে এবং প্রতিক্রিয়াটির অংশ হিসাবে ক্লায়েন্টকে এটি পাঠানো হচ্ছে:

var sys = require('sys'),
url = require('url'),
http = require('http'),
qs = require('querystring');

var server = http.createServer(

    function (request, response) {

        if (request.method == 'POST') {
                var body = '';
                request.on('data', function (data) {
                    body += data;
                });
                request.on('end',function() {

                    var POST =  qs.parse(body);
                    //console.log(POST);
                    response.writeHead( 200 );
                    response.write( JSON.stringify( POST ) );
                    response.end();
                });
        }
        else if(request.method == 'GET') {

            var url_parts = url.parse(request.url,true);
            //console.log(url_parts.query);
            response.writeHead( 200 );
            response.write( JSON.stringify( url_parts.query ) );
            response.end();
        }
    }
);

server.listen(9080);

parse.js হিসাবে এটি সংরক্ষণ করুন, এবং "নোড parse.js" প্রবেশ করে কনসোল এ চালান।


এক্সপ্রেস, req.query ব্যবহার req.query

req.params শুধুমাত্র রুট পরামিতি পায়, কোয়েরি স্ট্রিং পরামিতি নয়। express বা sails ডকুমেন্টেশন দেখুন:

(req.params) রুট প্যারামিটার চেক করে, প্রাক্তন: / user / id

(req.query) জিজ্ঞাস্য স্ট্রিং প্যারামিটার পরীক্ষা করে, প্রাক্তন:? id = 12 urlencoded body params পরীক্ষা করে

(req.body), ex: id = 12 urlencoded অনুরোধ সংস্থানগুলি ব্যবহার করতে, req.body একটি বস্তু হওয়া উচিত। _Express.bodyParser মিডলওয়্যার ব্যবহার করে এটি করা যেতে পারে।

যে বলেন, অধিকাংশ সময়, আপনি তার উৎস নির্বিশেষে একটি পরামিতির মান পেতে চান। সেই ক্ষেত্রে, req.param('foo')

পরামিতি মানটি রুট প্যারামিটার, ক্যোয়ারী স্ট্রিং, বা এনকোড হওয়া অনুরোধ শরীরের মধ্যে কিনা তা ফেরত পাঠানো হবে।

সাইড নোট- যদি আপনি তিনটি অনুরোধের পরামিতিগুলির $_REQUEST (পিএইচপি এর $_REQUEST এর $_REQUEST ) এর অন্তর্চ্ছেদ পেতে লক্ষ্য $_REQUEST আপনাকে কেবলমাত্র পরামিতিগুলিকে একত্রিত করতে হবে - এখানে আমি $_REQUEST সেট আপ করি। মনে রাখবেন যে পথ / রুট পরামিতি বস্তু ( req.params ) এর অ্যারের বৈশিষ্ট্য রয়েছে, তাই বিষয়গুলি অর্ডার করুন (যদিও এটি এক্সপ্রেস 4 এ পরিবর্তিত হতে পারে )


তুমি ব্যবহার করতে পার

request.query.<varible-name>;

যেহেতু আপনি আপনার ট্যাগগুলিতে Express.js উল্লেখ করেছেন, এখানে একটি এক্সপ্রেস-নির্দিষ্ট উত্তর রয়েছে: req.query ব্যবহার করুন । যেমন

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

app.get('/', function(req, res){
  res.send('id: ' + req.query.id);
});

app.listen(3000);

express.js আপনি এটি সহজে পেতে পারেন, আপনার কন্ট্রোলার ফাংশনে যা করতে হবে তা হল:

app.get('/', (req, res, next) => {
   const {id} = req.query;
   // rest of your code here...
})

এবং যে সব, আপনি এস 6 বাক্য গঠন ব্যবহার করছেন অনুমান করা হয়।

পি ডি। {id} Object destructuring জন্য দাঁড়িয়েছে, একটি নতুন es6 বৈশিষ্ট্য।


req.params জন্য আপনি req.params করতে চান:

app.get('/user/:id', function(req, res) {
  res.send('user' + req.params.id);    
});

কোন URL পরামিতি প্রাপ্ত

এই উদাহরণের জন্য, আমরা URL থেকে সরাসরি একটি পরামিতি দখল করব।

চলুন আমরা উদাহরণ URL ব্যবহার করছি: http://example.com/api/users/?id=4&token=sdfa3&geo=us

এর থেকে আসা পরামিতিগুলি হ'ল:

আইডি 4

টোকেন sdfa3

জিও আমাদের

এই পরামিতি দখল করা খুব সহজ। এখানে রুট এবং পরামিতি grabbing পদ্ধতি req.param()

// রুট এখানে যেতে হবে

app.get('/api/users', function(req, res) {
  var user_id = req.query.id;
  var token = req.query.token;
  var geo = req.query.geo;  

  res.send(user_id + ' ' + token + ' ' + geo);
});

পরামিতি স্বাভাবিকভাবেই req (অনুরোধ) অংশ মাধ্যমে পাস করা হয়।

এখন যদি আমরা http://localhost:8080/api/users/?id=4&token=sdfa3&geo=us এ আমাদের ব্রাউজারে যাই

আমরা তিন পরামিতি দেখতে সক্ষম হব!


//get query&params in express

//etc. example.com/user/000000?sex=female

app.get('/user/:id', function(req, res) {

  const query = req.query;// query = {sex:"female"}

  const params = req.params; //params = {id:"000000"}

})




express