تقنية

معامل رابط يفسره المساعد: هل get يقرأ كل القيم المتكررة؟

رسم توضيحي: tag: paper أولا؛ tag: wood ثانيا؛ get: paper فقط؛ getAll: القيمتان بالترتيب
مخطط من إعداد بحر العلوم. قائمة أزواج مؤلفة؛ النص الفارغ مختلف عن غياب الاسم

قد يتكرر اسم المعامل في جزء الاستعلام من رابط. عندما يلخص المساعد خيارات مكتوبة في العنوان، لا يكفي استعمال get ثم إعلان أنه جمع جميع القيم. نقرأ عقد URLSearchParams ونؤلف قائمة أزواج؛ لا نفتح الرابط أو نقرر كيف يعالج خادم مجهول هذه الخيارات.

الخلاصة السريعة

لا؛ get يعيد أول قيمة مطابقة أو null، بينما getAll يعيد جميع القيم المطابقة بترتيب القائمة، أو قائمة فارغة. [3] حدد العملية قبل وصف النتيجة.

  • يعيد get أول قيمة أو null، و getAll القيم كلها بترتيب القائمة أو قائمة فارغة. [3] العدد في النتيجة مرتبط بالعملية المختارة.
  • في قائمتنا tag=paper ثم tag=wood: الأولى paper، والجميع paper ثم wood. هذان زوجان باسم واحد، لا ملفان تحققنا من وجودهما.
  • تصف MDN عائد get بأنه نص أو null، وعائد getAll مصفوفة نصوص قد تكون فارغة. [1][2] نفرق المفتاح الغائب من مفتاح له نص فارغ.
  • لا تعني قراءة جميع القيم أن الخادم قبلها أو جمعها بالمنطق نفسه؛ يحفظ المساعد القائمة والعملية ونطاق الاستنتاج، ولم ينفذ رابطا.

لماذا يغير اسم العملية الجواب؟

ينص معيار URL على أن get يعيد قيمة أول زوج مطابق، أو null، وأن getAll يعيد قيم الأزواج المطابقة بترتيب القائمة، أو تسلسلا فارغا. [3]

نحتاج لذلك تعريف ما نسميه «القيمة» في التقرير. إن كان الهدف حصر الخيارات المتكررة، لا نعامل نتيجة العملية الأولى حصرًا كاملا. وإن كان الهدف معرفة أول قيمة، لا نستبدلها باختيار آخر دون قاعدة معلنة.

ننسب هذا السلوك إلى الكائن الموصوف. تفسير الخادم للمعاملات سؤال آخر؛ لا يجيب عنه اسم طريقة قراءة في المتصفح.

ما الذي يظهر في قائمة صغيرة؟

نؤلف قائمة أزواج بهذا الترتيب: tag مع paper، ثم mode مع brief، ثم tag مع wood. البحث عن tag عبر get يعطي paper؛ وعبر getAll يحتفظ بالقيمتين paper ثم wood في ترتيب القائمة.

لا تدخل brief في النتيجة لأنها تخص اسما آخر. ووجود wood ثانيا لا يجعله قيمة أحدث أو معتمدة بدلا من الأولى؛ لم نضع في الورقة قاعدة أولوية عمل تتجاوز عقد القراءة.

يمكن للمساعد ذكر عدد المطابقات اثنين ثم عرضهما. لكنه لا يحول هذا العدد إلى عدد ملفات أو أصناف فعلية اشتريناها أو اختبرناها.

العملية في الورقةالناتج المفترضالمعنى
get للاسم tagpaperأول قيمة
getAll للاسم tagpaper ثم woodكل القيم بترتيبها

هل القائمة الفارغة هي النص الفارغ؟

تصف MDN عائد get بأنه نص عند العثور أو null، وعائد getAll بأنه مصفوفة نصوص قد تكون فارغة عند عدم العثور. [1][2]

نختار في ورقة منفصلة اسما note له قيمة نصية فارغة. يحتوي الفرع زوجا مطابقا، لذلك ليس حالة غياب الاسم. نقابل ذلك بالاسم size الذي لا يوجد في الورقة: لهذا الفرع null مع get، وقائمة بلا عناصر مع getAll.

النص الفارغ عنصر محتمل في القائمة، أما القائمة الخالية فلا تحتوي عنصرا. لا يترجم المساعد الحالتين إلى عبارة «لا شيء» ثم يبني عليها أن المستخدم لم يقدم اختيارا؛ سبب النص الفارغ غير معروف هنا.

ما حدود تفسير الرابط؟

تصف ورقتنا نتيجة قراءة معلنة، لا طلبا وصل إلى خدمة. لو قرأ خادم الاسم بطريقة أخرى أو رفض قيمة، نحتاج عقده وسجله. لا نستنتج قبولا أو تنفيذا من نتيجة getAll.

كذلك لا تصبح أسماء paper و wood دليلا على لغة محتوى أو وجود ملف. اخترناهما نصين قصيرين لتتبع الاسم والقيمة، دون إرفاق موارد.

يكتب المساعد الاسم المطلوب، والعملية، وترتيب المطابقات عند طلب الجميع، ثم يميز غياب الاسم من نصه الفارغ. لم نشغل JavaScript أو نفتح عنوانا؛ المثال يختبر وضوح الشرح على الورق.

المصادر ومتابعة القراءة

  1. MDN: URLSearchParams getAll (يفتح في نافذة جديدة)developer.mozilla.org
  2. MDN: URLSearchParams get (يفتح في نافذة جديدة)developer.mozilla.org
  3. WHATWG URL: get and getAll (يفتح في نافذة جديدة)url.spec.whatwg.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.