آشنایی با متدهای Get و Post


آموزش MVC –> جلسه اول –> قسمت دهم

پروتکل Http :

ورژن قبلی HTTP 1.0 بود که دو مدل مهم Request به سمت سرور داشت که Get و Post بود . ورژن حال حاضر HTTP 1.1 است که معروفترین Request های آن از سمت server عبارتند از : Get-Post-Put-Delete

ارسال Request به سرور به صورت Get و Post :

چه مواقعی بصورت Get به سرور درخواست میفرستیم ؟

  • در مواقعی که آدرس سایت را بصورت دستی در نوار آدرس مرورگر وارد کرده و Enter را میزنیم .
  • وقتی روی یک لینک کلیک میکنیم و به سایت دیگری میرویم .
  • وقتی در تگ Form متد آنرا Get تعریف کنیم (بصورت پیش فرض Post می باشد) .

در مواقعی که در تگ فرم (Form) متد را بصورت پیش فرض Post قراردهیم و یک دکمه Submit داشته باشد و روی ان کلیک کنیم . اطلاعات فرم بصورت متد post به سرور ارسال میشود .

در HTTP 1.0 متد get دارای محدودیت ۲۵۵ کاراکتر دارد و بیش از ۲۵۵ کاراکتر را نمیتوان به سرور فرستاد .

در HTTP 1.1 محدودیت get به ۲۰۴۸ کاراکتر افزایش یافت ولی با اینحال توصیه نمیشود متد فرم (مثلا ثبت نام کاربران) را get قرار دهیم .

اگر متد فرمی را get قرار دهیم پس از submit کردن فرم و ارسال به سرور ، در آدرس بار مروگر تمام اطلاعات و فیلدهای پر شده کاربر نمایش داده می شود(بعنوان مثال http://mohtava.info/username=ehsan&password=12345) 

از این پس در این مقاله آموزشی ، در بالای هر اکشن متد ارسالی را به صراحت بیان میکنیم(بصورت Attribute)

اکنون به دو اکشن زیر دقت کنید :

 
[System.Web.Mvc.HttpGet]
public System.Web.Mvc.ContentResult Learn1230()
{
    return (Content("Hello World!"));
}
[System.Web.Mvc.HttpPost]
public System.Web.Mvc.ContentResult Learn1240()
{
    return (Content("Hello World!"));
}

در اکشن اول متد را get تعریف کرده ایم پس میتوان این اکشن را در آدرس بار مرورگر تایپ کنیم و نتیجه را ببینیم .

اما در اکشن دوم متد بصورت post تعریف شده است بنابراین اگر آدرس آنرا (مثلا بصورت http://mohtava.info/Home/Learn1240) در آدرس بار تایپ کنیم با خطای Http Not Found مواجه می شویم . و برای اجرای این اکشن و تست آن باید حتما یک فرم طراحی کنیم که متد آن post باشد که بعد از submit کردن فرم به این اکشن بیاییم .

نکته : نوشتن هر دوی متدهای post و get بی معنی است . اگر Attribute را در بالای اکشن تعریف نکنیم ، پیش فرض آن get است .برای آشنایی بیشتر با متدهای get و post به وب سایت mvc4beginner مراجعه شود .

در مقاله بعد خواهیم دید که چگونه میتوان دو اکشن با نام های یکسان در یک کنترولر تعریف کرد . همچنان با ما باشید …blush



دیدگاه ها :