0Pricing
Ruby Academy · درس

المسارات والمعلمات

معالجة 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Sinatra
  2. المسارات والمعلمات
  3. واجهات JSON البرمجية
  4. البرمجيات الوسيطة وRack
← العودة إلى Ruby Academy