از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
رشته ها و پارامترهای پرس و جو را در Express.js دریافت کنید ما به روش استخراج اطلاعات از URL در Express.js خواهیم پرداخت. به طور خاص، چگونه اطلاعات را از یک query string استخراج کنیم و چگونه اطلاعات را از پارامترهای مسیر URL استخراج کنیم؟ در این مقاله، تصور میکنم تجربهای با Node.js و ایجاد Express دارید.
سرفصلهای مطلب
معرفی
ما به روش استخراج اطلاعات از URL در Express.js خواهیم پرداخت. به طور خاص، چگونه اطلاعات را از یک query string استخراج کنیم و چگونه اطلاعات را از پارامترهای مسیر URL استخراج کنیم؟
در این مقاله، تصور میکنم شما تجربهای با Node.js و ایجاد آن دارید Express.js سرورها (یا حداقل آنهایی که ساده هستند). بقیه موارد را در طول مقاله توضیح خواهیم داد.
استخراج پارامترهای پرس و جو
قبل از شروع، بهتر است ابتدا بفهمیم رشته/پارامتر پرس و جو دقیقاً چیست و سپس در مورد روش کار با آنها صحبت خواهیم کرد.
بنابراین، پارامتر پرس و جو چیست?
به زبان ساده، یک پرس و جو رشته بخشی از a است URL (یاب منبع یکسان) بعد از علامت سوال (؟). این به معنای ارسال مقادیر کمی از اطلاعات به سرور از طریق URL است. این اطلاعات معمولاً به عنوان پارامترهایی برای پرس و جو از پایگاه داده یا شاید برای فیلتر کردن نتایج استفاده می شود. این واقعا به شما بستگی دارد که آنها برای چه استفاده می شوند.
در اینجا نمونه ای از URL با رشته های پرس و جو پیوست شده است:
https://rasanegar.com/?page=2&limit=3
پرس و جو مولفه های جفت های کلید-مقدار واقعی مانند هستند page
و limit
با ارزش های 2
و 3
، به ترتیب.
حالا بیایید حرکت کنیم روی به اولین هدف اصلی این مقاله – چگونه اینها را از شی درخواست Express خود استخراج کنیم.
این یک مورد بسیار رایج در Express و هر سرور HTTP است، بنابراین امیدوارم مثالها و توضیحاتی که در اینجا نشان میدهم واضح باشند.
حالا همین مثال را از بالا می گیریم:
https://rasanegar.com/?page=2&limit=3
ما می خواهیم هر دو را استخراج کنیم page
و limit
پارامترها بنابراین ما بدانیم که کدام مقاله را به آن بازگردانیم page که کاربر درخواست کرده است. در حالی که پارامترهای پرس و جو معمولا در استفاده می شود GET
درخواستها، هنوز امکان دیدن آنها وجود دارد POST
و DELETE
درخواست ها، از جمله.
پارامترهای پرس و جو شما را می توان از query
هدف – شی روی را درخواست شی به مسیر شما ارسال شد. این به شکل یک شی است که در آن می توانید مستقیماً به پارامترهای پرس و جوی مورد علاقه خود دسترسی پیدا کنید. در این مورد Express تمام تجزیه و تحلیل URL را برای شما مدیریت می کند و پارامترهای بازیابی شده را به عنوان این شی نشان می دهد.
بیایید نگاهی به مثالی از دریافت پارامترهای پرس و جو در یک مسیر بیندازیم:
const express = require('express');
const bodyParser = require('body-parser');
const url = require('url');
const querystring = require('querystring');
const Article = require('./models').Article;
let app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// Function to handle the root path
app.get('/', async function(req, res) {
// Access the provided 'page' and 'limt' query parameters
let page = req.query.page;
let limit = req.query.limit;
let articles = await Article.findAll().paginate({page: page, limit: limit}).exec();
// Return the articles to the rendering engine
res.render('index', {
articles: articles
});
});
let server = app.listen(8080, function() {
console.log('Server is listening روی port 8080')
});
در مثال بالا، فرض می کنیم page
و limit
پارامترها همیشه وجود دارند اگر هیچ یک از این پارامترها در URL داده نشده باشد، دریافت می کنیم undefined
برای هردو page
و limit
بجای.
استخراج پارامترهای پرس و جو بدون اکسپرس
به عنوان یک امتیاز سریع، می خواستم به شما نشان دهم که چگونه تجزیه واقعی را انجام دهید روی در صورت نیاز به استخراج اطلاعات از یک URL که از Express یا هر چارچوب وب دیگری استفاده نمی کند. ایجاد یک سرور ساده مرده با استفاده از این نسبتاً معمول است http
ماژول، بنابراین خوب است بدانید.
خوشبختانه برای شما، Node.js در حال حاضر چندین کتابخانه اصلی عالی را ارائه می دهد که این قابلیت را در خود دارند، بنابراین این فقط یک موضوع است require
– اجرای ماژول و فراخوانی چند خط کد.
در اینجا یک مثال با استفاده از querystring و آدرس اینترنتی بسته ها
const url = require('url');
const querystring = require('querystring');
let rawUrl = 'https://rasanegar.com/?page=2&limit=3';
let parsedUrl = url.parse(rawUrl);
let parsedQs = querystring.parse(parsedUrl.query);
// parsedQs = { page: '2', limit: '3' }
در این کد می بینید که برای به دست آوردن نتایج مورد نظر ما به دو مرحله تجزیه نیاز داریم.
بیایید این را کمی بیشتر بشکنیم و نشان دهیم که دقیقاً چه چیزی در حال انجام است روی در هر مرحله بعد از تماس url.parse(rawUrl)
روی URL ما، این چیزی است که به ما بازگردانده شده است:
{
protocol: 'https:',
slashes: true,
auth: null,
host: 'rasanegar.com',
port: null,
hostname: 'rasanegar.com',
hash: null,
search: '?page=2&limit=3',
query: 'page=2&limit=3',
pathname: '/',
path: '/?page=2&limit=3',
href: 'https://rasanegar.com/?page=2&limit=3'
}
بسیار خوب، ما به اطلاعات مورد نیاز خود کمی نزدیکتر شده ایم. اما باید یک بار دیگر تجزیه شود. ما می توانیم این کار را با استفاده از querystring
بسته برای تجزیه رشته پرس و جو واقعی. مثلا:
let parsedQs = querystring.parse(parsedUrl.query);
و در نهایت، ما parsedQs
شی شامل موارد زیر است:
{
page: '2',
limit: '3'
}
استخراج پارامترهای مسیر
در هر برنامه وب یکی دیگر از راه های رایج برای ساختار URL های شما، قرار دادن اطلاعات در مسیر URL واقعی است که به سادگی در Express پارامترهای مسیر نامیده می شوند. ما میتوانیم از اینها برای ساختاربندی صفحات وب بر اساس اطلاعات/دادهها استفاده کنیم، که بهویژه در APIهای REST مفید هستند.
استخراج این پارامترهای مسیر مشابه پارامترهای پرس و جو است. تمام کاری که ما انجام می دهیم این است که آن را بگیریم req
شیء کنید و پارامترهای خود را از قسمت بازیابی کنید params
هدف – شی. خیلی ساده، درست است؟
بیایید به نمونه ای از انجام این کار در مسیر اکسپرس خود نگاهی بیندازیم:
// Route to return all articles with a given tag
app.get('/tag/:id', async function(req, res) {
// Retrieve the tag from our URL path
var id = req.params.id;
let articles = await Article.findAll({tag: id}).exec();
res.render('tag', {
articles: articles
});
});
اولین چیزی که باید به آن توجه کنید این است که به Express می گوییم که مسیر ما این است /tag/:id
، جایی که :id
جای جای هر چیزی است. این می تواند یک رشته یا یک عدد باشد. بنابراین هر چیزی که در آن قسمت از مسیر گذرانده شود به عنوان قسمت تنظیم می شود id
پارامتر.
اگر بخواهیم به URL حرکت کنیم https://rasanegar.com/tag/node
سپس id
خواهد بود node
، و ما دسته ای از مقالات را دریافت می کنیم که دارای این موارد هستند node
برچسب زدن روی آنها و req.params
در این صورت خواهد بود {id: 'node'}
، درست مثل query
هدف – شی.
همانطور که می بینید، ما دوباره پارامتر خود را مستقیماً از یک شی موجود در شی درخواست می گیریم.
نتیجه
در این مقاله روش هایی برای استخراج پارامترهای رشته کوئری و پارامترهای مسیر مسیر از یک URL در چارچوب وب Express ارائه کردم. در اینجا خلاصه ای سریع از روش استخراج پارامترهایی که در مورد آنها صحبت کردیم آورده شده است:
req.query
: مستقیماً به پارامترهای رشته کوئری تجزیه شده دسترسی پیدا کنیدreq.params
: دسترسی مستقیم به پارامترهای مسیر تجزیه شده از مسیر
در حالی که عمل واقعی بازیابی این داده ها بسیار ساده است، درک اینکه این اطلاعات از کجا آمده و چیست می تواند برای برخی از مبتدیان گیج کننده باشد. امیدواریم این مقاله مواردی را برای شما روشن کرده باشد. در صورت وجود چیزی که نامشخص است، در نظرات به ما اطلاع دهید.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-28 02:56:03