নোড.জেএস-তে যেমন আমরা $_GET
পিএইচপি-তে পেয়েছি তেমন কি আমরা কি ক্যারিয়ার স্ট্রিংয়ে ভেরিয়েবলগুলি পেতে পারি ?
আমি জানি যে নোড.জেজে আমরা অনুরোধে ইউআরএল পেতে পারি। ক্যোরি স্ট্রিং প্যারামিটারগুলি পাওয়ার কোনও পদ্ধতি আছে?
নোড.জেএস-তে যেমন আমরা $_GET
পিএইচপি-তে পেয়েছি তেমন কি আমরা কি ক্যারিয়ার স্ট্রিংয়ে ভেরিয়েবলগুলি পেতে পারি ?
আমি জানি যে নোড.জেজে আমরা অনুরোধে ইউআরএল পেতে পারি। ক্যোরি স্ট্রিং প্যারামিটারগুলি পাওয়ার কোনও পদ্ধতি আছে?
উত্তর:
এক্সপ্রেসে এটি ইতিমধ্যে আপনার জন্য হয়ে গেছে এবং আপনি কেবল এর জন্য পুনরায় জিজ্ঞাসা ব্যবহার করতে পারেন :
var id = req.query.id; // $_GET["id"]
অন্যথায়, নোডজেএস-এ , আপনি url
[url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) এ ম্যানুয়ালি req.url এবং বিল্টিন মডিউলটি অ্যাক্সেস করতে পারবেন :
var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
বা req.param
(যা req.params
নীচে দেখুন ... এর চেয়ে পৃথক
request
এবং এক্সপ্রেসের সাথে তার কোনও যোগসূত্র নেই। নীচে @ হোয়াইটক্কার্কের উত্তর দেখুন (ব্যবহার করুন request.query
)
যেহেতু আপনি আপনার ট্যাগগুলিতে এক্সপ্রেস.জেস উল্লেখ করেছেন, তাই এখানে একটি এক্সপ্রেস-নির্দিষ্ট উত্তর: পুনরায় জিজ্ঞাসা ব্যবহার করুন । যেমন
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('id: ' + req.query.id);
});
app.listen(3000);
req.query.id
, বন্ধনী স্বরলিপি ব্যবহার করার প্রয়োজন নেই।
এক্সপ্রেসে, ব্যবহার করুন req.query
।
req.params
কেবল রুট প্যারামিটারগুলি পায়, কোয়েরি স্ট্রিং প্যারামিটারগুলি নয়। দেখুন দ্রুতগামী বা পালের ডকুমেন্টেশন:
(req.params) রুট প্যারামগুলি পরীক্ষা করে, প্রাক্তন: / ব্যবহারকারী /: আইডি
(req.query) ক্যোয়ারিং স্ট্রিং প্যারামগুলি পরীক্ষা করে, উদাহরণস্বরূপ:? id = 12 urlncoded বডি প্যারামগুলি পরীক্ষা করে
(req.body), প্রাক্তন: id = 12 urlencoded অনুরোধ সংস্থাগুলি ব্যবহার করতে, রেকর্ড.কে একটি বস্তু হওয়া উচিত। এটি _express.bodyParser মিডওয়্যারটি ব্যবহার করে করা যেতে পারে।
এটি বলেছিল, বেশিরভাগ সময়, আপনি কোনও প্যারামিটারের উত্স নির্বিশেষে মূল্য পেতে চান। সেক্ষেত্রে ব্যবহার করুন req.param('foo')
।
চলকটি রুট প্যারামিটার, ক্যোয়ারী স্ট্রিং বা এনকোডযুক্ত অনুরোধের বডিটিতে ছিল কিনা তা প্যারামিটারের মান ফেরত দেওয়া হবে।
পার্শ্ব নোট- যদি আপনি তিনটি অনুরোধের প্যারামিটারের (পিএইচপি'র অনুরূপ $_REQUEST
) ছেদ পেতে চান তবে আপনাকে কেবল পরামিতিগুলি একত্রিত করতে হবে - এখানে আমি এটি সেলগুলিতে কীভাবে সেট আপ করব । মনে রাখবেন যে পথ / রুট প্যারামিটার অবজেক্টে ( req.params
) এর অ্যারে বৈশিষ্ট্য রয়েছে, সুতরাং বিষয়গুলি অর্ডার করুন (যদিও এটি এক্সপ্রেস 4 এ পরিবর্তিত হতে পারে )
req.params
সেলস ডক্সের লিঙ্কটি দিয়েছেন : সেলসজস.আর.জি .# / docamentation / references / req / req.params.html এবং নতুন এক্সপ্রেস ডক্স: এক্সপ্রেজস / ৪x
req.param()
হেল্পার ফাংশনটি 5 এক্সপ্রেসে সম্পূর্ণরূপে সরিয়ে ফেলা হতে পারে এটি 2017 এর কিছু সময়ের পরে আসন্ন হবে না, তাই আমি সম্পাদনা করার জন্য অপেক্ষা করব এই উত্তর না হওয়া পর্যন্ত। মাঝামাঝি সময়ে: req.param()
এক্সপ্রেস <= 3.x / সেল <= 0.12 এবং এক্সপ্রেস 4 এর সর্বশেষ উপলব্ধ রিলিজ সহ ডাব্লু / অব হ্রাস লগ বার্তা সহ এটি ব্যবহার করা নিরাপদ । (বেল ব্যবহারকারীদের জন্য: এর প্রয়োগগুলি req.param()
সেল সেল
এক্সপ্রেস.জেএস এর জন্য আপনি যা করতে চান req.params
:
app.get('/user/:id', function(req, res) {
res.send('user' + req.params.id);
});
আমি অন্যান্য উত্তরগুলি থেকে শিখেছি এবং আমার সাইট জুড়ে এই কোডটি ব্যবহার করার সিদ্ধান্ত নিয়েছি:
var query = require('url').parse(req.url,true).query;
তারপরে আপনি কেবল কল করতে পারেন
var id = query.id;
var option = query.option;
প্রাপ্তির URL যেখানে হওয়া উচিত
/path/filename?id=123&option=456
parse
উপর req.url
একটা অবজেক্ট রূপান্তরিত করে।
//get query¶ms 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"}
})
আপনি যদি ES6 এবং এক্সপ্রেস ব্যবহার করছেন তবে এই destructuring
পদ্ধতির চেষ্টা করুন :
const {id, since, fields, anotherField} = request.query;
প্রেক্ষাপটে:
const express = require('express');
const app = express();
app.get('/', function(req, res){
const {id, since, fields, anotherField} = req.query;
});
app.listen(3000);
আপনি এটির সাথে ডিফল্ট মানগুলিও ব্যবহার করতে পারেন destructuring
:
// sample request for testing
const req = {
query: {
id: '123',
fields: ['a', 'b', 'c']
}
}
const {
id,
since = new Date().toString(),
fields = ['x'],
anotherField = 'default'
} = req.query;
console.log(id, since, fields, anotherField)
জিইটি পদ্ধতির মাধ্যমে প্যারামিটারগুলি পাস করার জন্য দুটি উপায় রয়েছে
পদ্ধতি 1: আপনি যে রাউটেনাম /: পরামিতর মতো পরামিতিগুলি পাস করেন সেখানে এমভিসি পদ্ধতির
ক্ষেত্রে আপনি প্যারামিটারের মান পেতে req.params.paramname ব্যবহার করতে পারেন উদাহরণ হিসাবে নীচের কোডটি উল্লেখ করুন যেখানে I পারম
লিঙ্ক হিসাবে আইডিটি প্রত্যাশা করছি : 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);
আপনার এমন কিছু করতে সক্ষম হওয়া উচিত:
var http = require('http');
var url = require('url');
http.createServer(function(req,res){
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
console.log(query); //{Object}
res.end("End")
})
আপডেট 4 মে 2014
পুরানো উত্তর এখানে সংরক্ষণ করা হয়েছে: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) এক্সপ্রেস ইনস্টল করুন: npm install express
app.js
var express = require('express');
var app = express();
app.get('/endpoint', function(request, response) {
var id = request.query.id;
response.end("I have received the ID: " + id);
});
app.listen(3000);
console.log("node express app started at http://localhost:3000");
2) অ্যাপটি চালান: node app.js
3) ব্রাউজারে যান: http://localhost:3000/endpoint?id=something
আমি আইডি পেয়েছি: কিছু
(আমার উত্তরের পরে অনেক কিছুই পরিবর্তিত হয়েছে এবং আমি বিশ্বাস করি যে এটি জিনিস আপ টু ডেট রাখার পক্ষে মূল্যবান)
একটি ছোট নোড.জেএস এইচটিটিপি সার্ভার 9080 পোর্টে শুনছে, জিইটি বা পোষ্টের ডেটা পার্স করে এবং প্রতিক্রিয়ার অংশ হিসাবে এটি ক্লায়েন্টকে ফেরত পাঠিয়েছে:
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
এবং "নোড পার্স.জেএস" প্রবেশ করে কনসোলে চালান।
হোয়াইটকার্ক সুন্দরভাবে প্রতিক্রিয়া জানাল। তবে নোড.জেএস এবং এক্সপ্রেস.জেএস এর বর্তমান সংস্করণগুলির সাথে এর জন্য আরও একটি লাইন প্রয়োজন। 'প্রয়োজনীয় HTTP' (দ্বিতীয় লাইন) যুক্ত করার বিষয়টি নিশ্চিত করুন। আমি এখানে একটি পূর্ণ উদাহরণ পোস্ট করেছি যা দেখায় যে এই কলটি কীভাবে কাজ করতে পারে। একবার চলার পরে, 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'));
})
এটি এত সহজ:
উদাহরণ ইউআরএল:
http://stackoverflow.com:3000/activate_accountid=3&activatekey=$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK
আপনি ব্যবহার করে ক্যোয়ারী স্ট্রিংয়ের সমস্ত মান মুদ্রণ করতে পারেন:
console.log("All query strings: " + JSON.stringify(req.query));
আউটপুট
সমস্ত প্রশ্নের স্ট্রিং: {"আইডি": "3", "অ্যাক্টিভেটকি": "$ 2 এ $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjz fUrqLrgS3zXJVfVRK"
নির্দিষ্ট মুদ্রণ করতে:
console.log("activatekey: " + req.query.activatekey);
আউটপুট
অ্যাক্টিভেটকি: $ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjzfUrqLrgS3zXJVfVRK
ইন express.js
আপনি এটা বেশ সহজ পেতে পারেন, সব আপনি আপনার নিয়ামক ফাংশনে যা করতে হবে হল:
app.get('/', (req, res, next) => {
const {id} = req.query;
// rest of your code here...
})
এবং এগুলিই, ধরে নিই আপনি এস 6 সিনট্যাক্স ব্যবহার করছেন।
পি ডি। {id}
এর জন্য দাঁড়িয়েছে Object destructuring
, একটি নতুন এস 6 বৈশিষ্ট্য।
app.get('/user/:id', function(req, res) {
res.send('user' + req.params.id);
});
আপনি এটি ব্যবহার করতে পারেন বা অনুরোধের পরামিতিগুলি থেকে বিশেষ উপাদান পার্স করার জন্য আপনি বডি পার্সার চেষ্টা করতে পারেন।
এটি আসলে সহজ:
const express= require('express');
const app = express();
app.get('/post', (req, res, next) => {
res.send('ID:' + req.query.id + ' Edit:'+ req.query.edit);
});
app.listen(1000);
// localhost:1000/post?id=123&edit=true
// output: ID: 123 Edit: true
আপনি url.parse ব্যবহার করে পরামিতিগুলি সংগ্রহ করতে url মডিউলটি ব্যবহার করতে পারেন
var url = require('url');
var url_data = url.parse(request.url, true);
var query = url_data.query;
এক্সপ্রেসগুলিতে এটি সম্পন্ন করেছে,
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
});
এক্সপ্রেসে, আমরা কেবল ব্যবহার করতে পারি req.query.<name>
। এটি $_GET['name']
পিএইচপি- র মতোই কাজ করে ।
আমার দৃষ্টিকোণ থেকে আমি মনে করি যে অনেক লোক দুটি পৃথক ধারণা মিশ্রিত করে। আরআরইএসটি বিকাশের সময় আমি দুটি উপায় "পাথ ভেরিয়েবল" এবং "অনুরোধ প্যারামিটারগুলি" (ক্যোয়ারী প্যারামিটার) দিয়ে ইউআরএলটিতে তথ্য পাস করার সাথে পরিচিত ছিলাম। আরএফসি ইউআরআই-এর অংশগুলি এর মতো বর্ণনা করে: লিঙ্কের বিবরণ এখানে প্রবেশ করান তাই আমি বুঝতে পেরেছিলাম যে লেখক কীভাবে অনুরোধের পরামিতিগুলি পাস করবেন তা জানতে চাইবেন। আমি কেবল বিষয়টিকে বুঝতে সহজ করে তুলতে চাই, তবে সমাধানটি এখানে বহুবার উল্লেখ করা হয়েছিল।
আপনি ইউআরআই থেকে ক্যোয়ারী প্যারামিটারগুলি সাথে পেতে পারেন request.query.<name of the parameter>
, দ্বিতীয় বর্ণিত সমাধানটি ছিল request.params.<name of the parameter>
এবং এর সাহায্যে আপনি পাথের ভেরিয়েবলগুলি পেতে পারেন।
সুতরাং, দুটি উপায় রয়েছে যার মাধ্যমে এই "আইডি" গ্রহণ করা যেতে পারে: 1) প্যারাম ব্যবহার করে: কোড প্যারামগুলি এমন কিছু দেখতে পাবেন: বলুন যে আমাদের একটি অ্যারে আছে,
const courses = [{
id: 1,
name: 'Mathematics'
},
{
id: 2,
name: 'History'
}
];
তারপরে প্যারামগুলির জন্য আমরা এর মতো কিছু করতে পারি:
app.get('/api/posts/:id',(req,res)=>{
const course = courses.find(o=>o.id == (req.params.id))
res.send(course);
});
2) অন্য পদ্ধতিটি হল ক্যোয়ারী প্যারামিটারগুলি ব্যবহার করা। ইউআরএল "..... \ এপিআই xyz? id = 1" যেখানে "? আইডি = 1" এর কোয়েরি অংশ হিসাবে কিছু দেখতে পাবেন। এক্ষেত্রে আমরা এর মতো কিছু করতে পারি:
app.get('/api/posts',(req,res)=>{
const course = courses.find(o=>o.id == (req.query.id))
res.send(course);
});
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('id: ' + req.query.id);
});
app.listen(3000);
আপনার যদি কখনও GET
কোনও অনুরোধ প্রেরণের IP
পাশাপাশি কোনও Domain
(অন্য উত্তরগুলি উল্লেখ করে না তবে আপনি একটি port
পরিবর্তনশীল নির্দিষ্ট করতে পারেন ), আপনি এই ফাংশনটি ব্যবহার করতে পারেন:
function getCode(host, port, path, queryString) {
console.log("(" + host + ":" + port + path + ")" + "Running httpHelper.getCode()")
// Construct url and query string
const requestUrl = url.parse(url.format({
protocol: 'http',
hostname: host,
pathname: path,
port: port,
query: queryString
}));
console.log("(" + host + path + ")" + "Sending GET request")
// Send request
console.log(url.format(requestUrl))
http.get(url.format(requestUrl), (resp) => {
let data = '';
// A chunk of data has been received.
resp.on('data', (chunk) => {
console.log("GET chunk: " + chunk);
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', () => {
console.log("GET end of response: " + data);
});
}).on("error", (err) => {
console.log("GET Error: " + err);
});
}
আপনার ফাইলের শীর্ষে প্রয়োজনীয় মডিউলগুলি মিস করবেন না:
http = require("http");
url = require('url')
https
সুরক্ষিত ডোমেন এবং এসএসএল যোগাযোগের জন্য আপনি মডিউল ব্যবহার করতে পারেন তা মনে রাখবেন bare সুতরাং এই দুটি লাইন পরিবর্তন হবে:
https = require("https");
...
https.get(url.format(requestUrl), (resp) => { ......
আমি এক্সপ্রেস@4.16 এর সাথে এমইএনজেএস 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
...
-------- ক্যারিিং স্ট্রিং ডেটা অ্যাক্সেস করা -------
ধরুন এটি লিঙ্কটি http://webapplog.com/search?term=node.js&page=1
এক্সপ্রেসে আপনি ব্যবহার করতে পারেন:
req.query.term
req.query.page
অথবা req.query
(এটি একটি অবজেক্টে ক্যোয়ারী আনবে)
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{
res.json({term:req.query.term, page:req.query.page})
})
-------- ইউআরএল পরামিতিগুলি অ্যাক্সেস করা -------
ধরুন এই লিঙ্কটি http://webapplog.com/node.js/pages/100
সুতরাং এক্সপ্রেসে আপনি ব্যবহার করতে পারেন:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{
res.json({term:req.params.term, page:req.params.page})
})