សំណើរ & ការឆ្លើយតប

ជាទូទៅ កម្មវិធី​គេហទំព័រដំណើរ​ការទៅ​ដោយ​មាន​​អ្នក​ចូល​មើល​គេហទំព័រ​ចុច​នេះ​ឬ​ចុច​នោះ ក្នុង​គោលបំណង​មើល​​ពត៌មាន​ណា​មួយ​នៅ​លើ​ទំព័រ​​ណា​មួយ​។ បាន​ន័យ​ថា កម្មវិធី​គេហទំព័រ​ក៏​ជា​កម្មវិធី​ឆ្លើយតប​ហេតុការណ៍​ (Event Driven Program) ដូច​ជា​កម្មវិធី​ផ្សេង​ៗ​ទៀត​ដែរ​ ពីព្រោះនៅ​ពេលដែល​អ្នក​​​ចូលមើល​គេហទំព័រ​ចុច​នេះ​ឬ​ចុច​នោះ ហេតុការណ៍​ខុស​ៗ​គ្នា​នឹង​កើត​មាន​​ឡើង ដែលទាម​ទារ​អោយ​មាន​ការឆ្លើយតប​ដ៏​សមស្រប​ណា​មួយ​ក្នុង​បរិបទ​ណា​មួយ​។

មួយវិញទៀត សំរាប់​អ្នក​អភិវឌ្ឍ​កម្មវិធី​គេហទំព័រ ទំព័រ​និមួយ​ៗ​មាន​អាស័យដ្ឋានដោយឡែករៀង​ៗ​ខ្លួន (URL) ហើយ​ការ​ចុច​របស់​អ្នក​ចូល​មើល​គេហទំព័រ​ គឺ​ជា សំណើរ (request) ​ស្នើ​សុំ​អោយ​កម្មវិធី​គេហទំព័រ​ ឆ្លើយតប​ (response) មក​វិញ​ដោយ​បង្ហាញ​ព័ត៌មាន​របស់​ទំព័រ​ដែល​មាន​អាស័យដ្ឋានដូច​ដែល​​អ្នក​ចូល​មើល​​បាន​ចុច​។

សរុបមក «សំណើរ» និង «ការឆ្លើយតប» គឺ​ជា​ប្រធានបទ​​ស្នូល​នៃ​កម្មវិធី​គេហទំព័រ​​ទាំងឡាយ​។ ដូចនេះ ​គោលបំណងសំខាន់បំផុត​នៃ​កម្មវិធី​គេហទំព័រ គឺ​ការដោះស្រាយ​បញ្ហានៅ​​ជុំវិញ​ សំណើរ & ការឆ្លើយតប នេះ​។

ដូច​បាន​លើក​ឡើង​រួច​មក​ហើយ​ថា សំរាប់​កម្មវិធី​គេហទំព័រ នៅ​ពេល​ដែល​អ្នក​ចូលមើល​ចុច​ចង់​មើល​ទំព័រ​ណា​មួយ អាស័យដ្ឋាន​ (URL) របស់​ទំព័រ​នោះ​ត្រូវ​បាន​បញ្ជូន​ទៅ​កាន់​កម្មវិធី​គេហទំព័រ​ដើម្បី​ពិនិត្យ​និង​ធ្វើការឆ្លើយតប​ដ៏​សម​ស្រប​ណា​មួយ។ ហើយ​ជាទូទៅ ការឆ្លើយតប​​គឺ​ជាការបង្ហាញ​ព័ត៌មាន​​​​ដែល​ទាក់ទង​និង​អាស័យដ្ឋាននោះ​នៅ​លើ​ browser ។ យន្តការពិនិត្យ​​​​មើល​អាស័យដ្ឋាន​ដើំម្បី​​ធ្វើការឆ្លើយតប​​​ដ៏​សម​ស្រប​​ណា​មួយ​នោះ​ ត្រូវ​គេ​អោយ​ហៅ​​​​ជា​ភាសា​អង់គ្លេសថា routing ដែល​យើង​អាច​ប្រើ​ពាក្យ​ខ្មែរ​ថា ការកំណត់ផ្លូវ សំរាប់បកប្រែ​ពាក្យ​នេះ​​បាន​។

ជាទូទៅ​ ការឆ្លើយតប​ទៅ​នឹង​សំណើរណា​មួយ​របស់​អ្នក​ចូល​​មើល​គេហទំព័រ គឺ​​ជាការបង្ហាញ​ព័ត៌មាន​នៅ​លើ browser ​​ទាក់​ទង​នឹង​អាស័យដ្ឋាន​ណា​មួយ​​ដែល​ជា​សំណើរ​របស់​អ្នកចូល​មើល​។ ហើយ​យន្តការ​បង្ហាញ​ព័ត៌មាន​នៅលើ​ browser ​​នេះ ត្រូវ​បាន​គេ​កំណត់​ឈ្មោះ​ជា​ភាសា​អង់គ្លេស​ថា view ដែលយើង​អាច​​កំណត់​យក​ពាក្យ​ខ្មែរ​ថា ការបង្ហាញ សំរាប់​បក​ប្រែ​ពាក្យ​នេះ​បាន​ដែរ​​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖
import cherrypy

class HelloWorld(object):
  @cherrypy.expose
  def index(self):
    return "ស្វាគមន៍​មកកាន់​កម្មវិធី CherryPy!"

  @cherrypy.expose
  def greet(self):
    return 'សួស្តី '+'សុខាវុធ'+'!'
    

if __name__ == '__main__':
    cherrypy.quickstart(HelloWorld())

បើ​យើង​ដំណើរការ​កម្មវិធី​ខាង​លើ​នេះ ហើយ​បើក​ browser ចូល​ទៅ​កាន់​គេហទំព័រ​ដែល​មាន​អាស័យដ្ឋាន http://localhost:8080/ មាន​ន័យ​ថា យើង​ធ្វើ​សំណើរ​មួយ​សុំ​អោយ​កម្មវិធី​នេះ អោយ​ឆ្លើយ​តប​មក​វិញ ដោយ​បង្ហាញ​ព័ត៌មាន​ទាំក់ទង​នឹង​អាស័យដ្ឋាន​នេះ ដែល​ជា​ទំព័រ​ដើម​។ ប្រការ​នេះ​បាន​ធ្វើ​អោយ​វិធី​ឈ្មោះ index នៅ​ក្នុង​កម្មវិធី​ខាង​លើ ត្រូវ​បាន​យក​មកប្រើ​ ដែល​ធ្វើ​អោយ​ប្រយោគ "ស្វាគមន៍​មកកាន់​កម្មវិធី CherryPy!" ត្រូវ​បាន​បង្ហាញ​នៅ​លើ​ browser ។ ក៏ប៉ុន្តែ បើ​សិន​ជា​យើង​ចូល​ទៅ​តាម​អាស័យដ្ឋាន http://localhost:8080/greet នេះវិញ វិធី​ឈ្មោះ greet នៅ​ក្នុង​កម្មវិធី​ខាង​លើ​នឹង​ត្រូវ​យក​មក​ប្រើ ដែល​នឹង​ធ្វើ​អោយ​ប្រយោគ 'សួស្តី '+'សុខាវុធ'+'!' ត្រូវ​បង្ហាញ​ឡើង​នៅ​លើ​ browser ។

សរុបមក ឈ្មោះ​របស់​វិធី​ទាំងឡាយ​នៅ​ក្នុង​ថ្នាក់​មេ​នៃ​កម្មវិធី CherryPy មាន​នាទី​សំខាន់​ណាស់​ក្នុង​ការកំណត់​ផ្លូវ​ចូល​ទៅ​កាន់​ទំព័រ​ផ្សេង​ៗ​។ ហើយ​បញ្ជា​ទាំងឡាយ​នៅ​ក្នុង​វិធី​ទាំងនោះ មាន​នាទី​សំខាន់​ក្នុង​ការបង្ហាញ​ព័ត៌មាន​ទាំងឡាយ ដែល​ជា​ការឆ្លើយតប​ទៅ​នឹង​សំណើរ​ទាក់ទង​ទៅ​នឹង​ឈ្មោះ​របស់​វិធី​ទាំងនោះ​៕