មាតិកា

  1. សេចក្តីផ្តើម
  2. គោលបំណង
  3. តម្រូវការ
  4. HttpGet
  5. HttpPost
  6. ភាពខុសគ្នារវាង HttpPost និង HttpGet method

1. សេចក្តីផ្តើម

នៅក្នុង Tutorial នេះ យើងនឹងសិក្សាពីរបៀបប្រើប្រាស់ HttpGet និង HttpPost នៅក្នុង ASP.NET MVC។ Method ទាំងពីរនេះគឺយើងប្រើវាសម្រាប់ធ្វើការ post data ពី client ទៅកាន់ server និងធ្វើការ get data ពី​ server មកវិញ។ ដើម្បីយល់បន្ថែមទៀតសូមធ្វើការអនុវត្តន៍ដូចខាងក្រោម។

2. គោលបំណង

ក្រោយពីអនុវត្តន៍តាម Tutorial នេះ លោកអ្នកនឹងយល់អំពី

  • យល់ដឹងពីរអ្វីទៅជា HTTPGET និង HTTPPOST
  • យល់ដឹងពីភាពខុសគ្នារវាង HTTPGET និង HTTPPOST Method
  • យល់ដឹងពីការប្រើប្រាស់ HttpGet ជាមួយឧទាហរណ៍
  • យល់ដឹងពីការប្រើប្រាស់ HttpPost ជាមួយឧទាហរណ៍

3. តម្រូវការ

ដើម្បីអាចសិក្សា បានយើងត្រូវមាន

  • Microsoft Visual Studio (any version)
  • Microsoft SQL Server (any version)

4. HttpGet

HttpGet method ធ្វើការបញ្ជូនទិន្នន័យដោយប្រើប្រាស់ query string ហើយទិន្នន័យត្រូវបានភ្ជាប់ទៅកាន់ URL។ វាមានលក្ខណៈមិន secure ប៉ុន្តែវាលឿននិងឆាប់រហ័សដើម្បី access data។ វាភាគច្រើនត្រូវបានគេប្រើនៅពេលដែលយើងមិន post ទិន្នន័យសំខាន់ណាមួយទៅកាន់ server ដូចជា username, password, ពត៌មាន credit card ជាដើម។

  • ហេតុផលជាក់លាក់ដែលយើងប្រើប្រាស់ HttpGet method
    • វាមានភាពងាយស្រួល លឿននិងឆាប់រហ័សជាមួយការ access data ប៉ុន្តែមិន secure
    • វាគឺជា default method
    • វាភ្ជាប់ទម្រង់ទិន្នន័យ ជាលក្ខណៈ query string ដូច្នេះទិន្នន័យគឺអាចមើលឃើញដោយ users ផ្សេងទៀត
    • Query string data របស់វាមានប្រវែង limitកំណត់
    • វាមានប្រយោជន៍នៅពេលដែលទិន្នន័យមិនសំខាន់
    • វាបង្កើតនូវ url ដែលងាយស្រួលសម្រាប់ read
  • សូមធ្វើការក្រឡេកមើលទៅឧទាហរណ៌ដូចខាងក្រោមៈ
    • យើងបានបង្កើត class model មួយឈ្មោះថា “HomeController.cs”
      namespace HTTPGET_and_HTTPPOST_Method_with_Example.Models
      {
          public class StudentModel
          {
              public int Id { get; set; }
              public string Name { get; set; }
          }
      }
    • នៅក្នុង form “Index.cshtml” សូមសរសេរកូដដូចខាងក្រោមចូល
      <h3><b>Forms - HTTPGET Method</b></h3>
      @using (Html.BeginForm("Submit", "Home", FormMethod.Get))
      {
          <table>
              <tr>
                  <td>Enter ID: </td>
                  <td>@Html.TextBox("Id")</td>
              </tr>
              <tr>
                  <td>Enter Name: </td>
                  <td>@Html.TextBox("Name")</td>
              </tr>
              <tr>
                  <td colspan="2"><input type="submit" value="Submit"></td>
              </tr>
          </table>
      }
      <h4 style="color:purple">
          ID: @ViewBag.Id<br />
          Name: @ViewBag.Name<br />
      </h4>
    • បន្ទាប់មកនៅក្នុង HomeController សូមសរសេរកូដដូចខាងក្រោម
      [HttpGet]
              public ActionResult Submit(int id, string name)
              {
                  ViewBag.Id = id;
                  ViewBag.Name = name;
                  return View("Index");
              }
    • នៅពេលដែលយើង run application ដោយយើងប្រើប្រាស់ method HttpGet ដើម្បីធ្វើការ pass value ដូចនេះយើងនឹងឃើញថាdata គឺវាបានភ្ជាប់ទៅកាន់url ដោយប្រើប្រាស់ query string។
    • សូមធ្វើការ Run ដោយចុច F5 យើងនឹងទទួលបានដូចរូប
      • មុនពេលបញ្ចូលទិន្នន័យ រួចចុច submit
      • ក្រោយពេលបញ្ចូលទិន្នន័យ រួចចុច submit
      • ដូចដែលយើងបានឃើញហើយថា ក្រោយពេលចុច submit យើងនិងទទួលបាន url “Id=1&Name=Sysome” តាមរយៈ HttpGet method ដែលយើងហៅវាថា Query String៕

5. HttpPost

HttpPost method ប្រើសម្រាប់លាក់ព័ត៌មានពី URL ហើយនិងមិន bind data ទៅលើ url ឡើយ។ វាមានលក្ខណៈ secure ជាងការប្រើប្រាស់ HttpGet method ប៉ុន្តែ process ទាញយក data យឺតជាង HttpGet។ HttpPost មានសារៈប្រយោជន៍នៅពេលដែលអ្នកpass នូវព័ត៌មាន sensitive ទៅអោយ Server។

  • ហេតុផលមួយចំនួនដែលយើងជ្រើសរើសប្រើ HttpPost method
    • Data ត្រូវបាន send តាមរយៈ HttpPost method ដែលបិទបាំងមិនអោយ user ឃើញ។
    • វាមានលក្ខណៈ secure ប៉ុន្តែការប្រើប្រាស់យឺតជាង HttpGet
    • វាប្រើប្រាស់ Heap method សម្រាប់ pass variable ទៅអោយ form
    • វាអាចធ្វើការជាមួយនឹង​ text ហើយ binary data
  • សូមធ្វើការក្រឡេកមើលទៅឧទាហរណ៌ដូចខាងក្រោមៈ
    • យើងបានបង្កើត class model មួយឈ្មោះថា “StudentModel.cs”
      namespace HTTPGET_and_HTTPPOST_Method_with_Example.Models
      {
          public class StudentModel
          {
              public int Id { get; set; }
              public string Name { get; set; }
          }
      }
    • នៅក្នុង form “Index.cshtml” សូមសរសេរកូដដូចខាងក្រោមចូល
      <h3><b>Forms - HTTPGET Method</b></h3>
      @using (Html.BeginForm("Submit", "Home", FormMethod.Get))
      {
          <table>
              <tr>
                  <td>Enter ID: </td>
                  <td>@Html.TextBox("Id")</td>
              </tr>
              <tr>
                  <td>Enter Name: </td>
                  <td>@Html.TextBox("Name")</td>
              </tr>
              <tr>
                  <td colspan="2"><input type="submit" value="Submit"></td>
              </tr>
          </table>
      }
      <h4 style="color:purple">
          ID: @ViewBag.Id<br />
          Name: @ViewBag.Name<br />
      </h4>
    • បន្ទាប់មកនៅក្នុង HomeController សូមសរសេរកូដដូចខាងក្រោម
      [HttpPost]
              public ActionResult Submit(FormCollection fc)
              {
                  ViewBag.Id = fc["Id"];
                  ViewBag.Name = fc["Name"];
                  return View("Index");
              }
    • សូមក្រឡេកមើលទៅកាន់ URL structure អ្នកនឹងកត់សម្គាល់ឃើញថាពុំមាន data បង្ហាញនៅលើ URL ឡើយ (http://localhost:3952/Home/Submit)
    • សូមមើលលទ្ធផល

6. ភាពខុសគ្នារវាង HttpPost និង HttpGet method

សូមមើលពីភាពខុសគ្នាមួយចំនួនដូចតទៅនេះ៖

HttpGet Method HttpPost Method
– គឺជា method default –  ត្រូវតែបញ្ជាក់អោយបានច្បាស់នូវ​ HttpPost attribute ប្រសិនបើអ្នក post data ដោយប្រើប្រាស់ HttpPost method
– HTTPGet method creates a query string of the name-value pair –  HTTPPost method passes the name and value pairs in the body of the HTTP request
– HTTPGet request has limited length and mostly it is limited to 255 characters long –  HTTPPost request has no maximum limit
– HTTPGet is comparatively faster than HTTPPost –  HTTPPost takes extra time in encapsulating the data
– HTTPGet method creates readable url so it can be cached and bookmarked –  facility is not available in HTTPPost method
– HTTPGet can carry only string data –  HTTPPost can carry both string and binary data