المسارات والمعلمات
معالجة HTTP
المسارات والمعلمات درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
معالجة طلبات HTTP
تستجيب تطبيقات الويب للطلبات عبر مطابقة المسارات وقراءة المعاملات.
- يمكن أن تكون مقاطع المسار ديناميكية
- تحمل سلاسل الاستعلام بيانات إضافية
- تحمل أجسام النماذج الحقول المُرسلة
تتيح Sinatra كل ذلك من خلال Hash باسم params.
require 'sinatra'
get '/echo' do
params['msg'].to_s
endمعاملات المسار المسمّاة
تعرّف النقطتان الرأسيتان في المسار معاملًا مسمّى يلتقط مقطعًا من المسار.
- يطابق
/users/:idالمسار/users/42 - تظهر القيمة الملتقطة في
params['id']
require 'sinatra'
get '/users/:id' do
"User ID is #{params['id']}"
endمعاملات متعددة
يمكن أن يتضمن المسار عدة معاملات مسمّاة.
- يصبح كل مقطع يبدأ بنقطتين مفتاحًا في
params - لا يؤثر ترتيبها في المسار على الوصول إليها
require 'sinatra'
get '/posts/:year/:month' do
"Posts from #{params['month']}/#{params['year']}"
endمعاملات سلسلة الاستعلام
تصل قيم سلسلة الاستعلام التي تأتي بعد ? أيضًا إلى params.
- يعطي
/search?q=rubyالقيمةparams['q'] == 'ruby' - تُفصل الأزواج المتعددة باستخدام
&
require 'sinatra'
get '/search' do
"Searching for: #{params['q']}"
endالعمل مع params بوصفه Hash
يتصرف الكائن params مثل Hash في Ruby. وتوضح الممارسة باستخدام Hash عادي هذه الأنماط.
- استخدموا
fetchمع قيمة افتراضية لمزيد من الأمان - المفاتيح سلاسل نصية وفقًا للاصطلاح
params = { 'name' => 'Ada', 'lang' => 'Ruby' }
puts params['name']
puts params.fetch('age', 'unknown')بيانات النموذج باستخدام POST
في طلبات post، تظهر حقول النموذج المُرسلة في params أيضًا.
- تحلّل Sinatra جسم الطلب تلقائيًا
- نمط الوصول هو نفسه المستخدم مع معاملات الاستعلام
require 'sinatra'
post '/signup' do
"Welcome, #{params['username']}"
endمعاملات Splat
يطابق Splat (*) أي عدد من المحارف ويخزّنها في مصفوفة params['splat'].
- يلتقط
/files/*بقية المسار - ينتج استخدام عدة معاملات Splat عدة إدخالات في المصفوفة
require 'sinatra'
get '/files/*' do
"Path: #{params['splat'].first}"
endالمسارات الاختيارية ومسارات Regex
يمكن للمسارات استخدام التعبيرات النمطية لإجراء مطابقة دقيقة.
- تتوفر الالتقاطات في
params['captures'] - تفيد في فرض قيود مثل السماح بالمعرّفات الرقمية فقط
require 'sinatra'
get %r{/item/(\d+)} do
"Item #{params['captures'].first}"
endالتحقق من المعاملات
احرصوا دائمًا على التحقق من المعاملات الواردة وتحويلها، إذ تصل على هيئة سلاسل نصية.
- استخدموا
to_iأوInteger()للأرقام - ارفضوا القيم المطلوبة المفقودة مع إظهار خطأ واضح
def parse_id(raw)
id = Integer(raw)
raise 'must be positive' if id <= 0
id
end
puts parse_id('42')القيم الافتراضية
وفّروا قيمًا افتراضية مناسبة للمعاملات الاختيارية لتجنّب أخطاء nil.
params.fetch('page', '1')- ادمجوها مع التحويل لتنفيذ ترقيم صفحات آمن
params = { 'page' => nil }
page = (params['page'] || '1').to_i
puts "Page: #{page}"إعادة التوجيه
استخدموا redirect لإرسال العميل إلى عنوان URL آخر.
- يصدر الحالة 302 افتراضيًا
- يُستخدم عادةً بعد إرسال نموذج بنجاح
require 'sinatra'
post '/login' do
redirect '/dashboard'
endاختبار سريع
تحقّقوا مما تعرفونه عن المسارات وparams.
مراجعة
تعلّمتم كيفية معالجة Sinatra للإدخال:
- تستخدم المعاملات المسمّاة
:nameفي المسار - تملأ سلاسل الاستعلام وحقول النماذج
paramsأيضًا - تلتقط معاملات Splat ومسارات Regex المسارات المرنة
- تحقّقوا دائمًا من معاملات السلاسل النصية وحوّلوها
- استخدموا
redirectلنقل العملاء بين عناوين URL
بعد ذلك، ستعيدون استجابات JSON منظّمة.
الأسئلة الشائعة
هل درس «المسارات والمعلمات» مجاني؟
نعم — نص درس «المسارات والمعلمات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «المسارات والمعلمات»؟
معالجة HTTP تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المسارات والمعلمات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات Sinatra
- المسارات والمعلمات
- واجهات JSON البرمجية
- البرمجيات الوسيطة وRack