حتما دیدید وبسایت هایی مثل یوتوب، به چه شکلی پارامترها رو به URL پاس میدن. در واقع وقتی ما یک درخواست ویدئو به یوتوب میدیم، یوتوب اون رو به این شکل به متد watch خودش میفرسته :
youtube.com/watch?v=VIDEOCODE
و حالا اگر درخواست مشابهی بدیم و اون ویدئو در یک Playlist خاص باشه، URL به این شکل تغییر میکنه و ما یک پارامتر دیگه هم برای Query در دیتابیس یوتوب داریم :
youtube.com/watch?v=VIDEOCODE&list=LISTCODE
به این نوع پارامترها، پارامتر دلخواه گفته میشه. پارامتر دلخواه (Optional Parameter ) برای اینه که ما همیشه برای ایجاد یک پرس و جو در پایگاه داده، نیازی به همه پارامترها نداریم. گاهی فقط پاس دادن یک اسم کافیه، گاهی هم نیازه مثلا اسم و فامیل پاس داده بشه. یا مثلا برای جست و جو در یک وبلاگ عنوان متن عموما کافیه. خب؛ الان که میدونیم این پارامترها چی هستن و کجا به کار میان، بیایم در مورد پیاده سازی این نوع پارامترها در سیناترا صحبت کنیم.
سناریو
قراره که برنامه ای بنویسیم که در متدی به اسم greeter با دریافت پارامتر دلخواهی، به اسم داده شده در متغیر name سلام کنه. یعنی URL ما چنین چیزی خواهد بود :
example.com/greeter?name=GIVENNAME
پیاده سازی
برای پیاده سازی، فقط کافیه که یک پروژه سیناترا ایجاد کرده و کتابخانه های لازم رو لود کنید. سپس متد greeter رو به این شکل بنویسیم :
get '/greeter' do
name = params['name']
'Hello, #{name}'
end
به این شکل، ما میتونیم URL رو همونطوری که خواستیم وارد کنیم. اما ببینیم که نتیجه چی میشه؟
اگر صرفا این درخواست به سمت سرور بره :
GET /greeter
سرور متن Hello رو بدون هیچ اسمی، به ما برمیگردونه. اما وقتی درخواست به این صورت ارسال بشه :
GET /greeter?name=Sam
در پاسخ دریافتی از سرور عبارت Hello, Sam مشاهده میشه.
در پایان، امیدوارم که این مطلب به دردتون خورده باشه و بتونید ازش استفاده لازم رو ببرید 🙂