ភាពខុសគ្នារវាង Rest API និង Restful API

boss 16-Nov-2022 2430
Blog
ភាពខុសគ្នារវាង Rest API និង Restful API

តើអ្វីទៅជា API?

  API មកពីពាក្យពេញ “Application Programming Interface”។ និយាយអោយខ្លីគឺជាអ្នកដែល នៅចន្លោះកណ្តាលសម្រាប់អោយ Applications ធ្វើការឬទាក់ទងជាមួយគ្នាបាន។  

នៅក្នុងឧទាហរណ៍ជាក់ស្តែង​ Waiter ប្រៀបបានដូចជា​ API

ដូច្នេះ ជំនួសដោយការទៅទិញ ឬ កម៉្មង់ Pizza ពីកន្លែងចម្អិន។  ភ្ញៀវត្រូវធ្វើការកម្ម៉ង់តាម Waiter។

អត្ថប្រយោជន៍របស់ API:

  • Ease of integration: API អាចរួមបញ្ចូលជាមួយគ្រប់ប្រភេទនៃកម្មវិធី។ ដូច្នេះវាងាយស្រួលក្នុងការ integrate ជាមួយកម្មវិធី និង functions រវាង websites។ 
  • Reduce Software Development Effort: បើសិនជាមាន functions ណាដែលត្រូវការរួមរវាង application ច្រើនប្រភេទ។ នោះគេមិនចាំបាច់ចំណាយពេល Implement ម្តងទៀតនោះទេ។
  • Security: API ផ្តល់អោយយើងនូវ secure communication gateway សម្រាប់គ្រប់ components ដើម្បីទំនាក់ទំនងគ្នានិងផ្លាស់ប្តូរទិន្នន័យ។

អ្វីទៅជា REST?

ចម្លើយយ៉ាងខ្លីគឺ REST មកពីពាក្យពេញថា “Representational State Transfer”។​ វាគឺជា Architectural Style សម្រាប់បង្កើត Web Services។ REST ត្រូវបានបង្ហាញអោយស្គាល់ដោយលោក Roy Fielding នៅក្នុងឆ្នាំ ២០០០ នៃ Doctoral Dissertation (ជាផ្នែកមួយនៃតម្រូវការដើម្បីបញ្ចប់ PHD) រប​ស់គាត់។​ យើងអាចនិយាយបានថាវាជា គម្រូនៃការណែនាំអោយ Developer designs និង develop ទៅតាម architecture សម្រាប់ World Wide Web។​ ដូច្នេះហើយវាមានបណ្តុំនៃ លក្ខខណ្ឌដូចតទៅ។

REST Architectural Constraints:

  • Client-server – REST Application មាន server សម្រាប់គ្រប់គ្រងទិន្នន័យរបស់​ application និង state។​ Server ធ្វើការទំនាក់ទំនងជាមួយ client ដែលជាអ្នកទទួលខុសត្រូវចំពោះ សកម្មភាពឬការប្រើប្រាស់ទាំងអស់របស់ users។ ការបំបែក client និង server ចេញពីគ្នានេះគឺមានន័យថាយើងអាចអភិវឌ្ឍ និង ពិនិត្យវារៀងខ្លួនបានផ្តាច់ផ្សេងពីគ្នា។
  • Stateless – Server មិនបានគ្រប់គ្រងនូវ state របស់ client នោះទេគឺខាង client ជាអ្នកគ្រប់គ្រងផ្ទាល់ដោយខ្លួនឯង។ ការ request ទាំងអស់ពី client ទៅកាន់ server ត្រូវការព័ត៌មានចាំបាច់មួយចំនួនដើម្បីដំណើរការ។
  • Cacheable – Server ត្រូវតែប្រាប់មកកាន់ client ថាអាចផ្ទុក cache បានឬអត់។ ដូច្នេះ infrastructure និង server អាច cache បាននៅពេលណាដែលអាចដើម្បីជួយបង្កើនល្បឿនរបស់ប្រព័ន្ធ។
  • Layered – Layered system អាចជួយអោយ REST architecture មានភាព scalable។ លើសពីនេះយើងអាច បន្ថែម load-balancers និង proxies ដើម្បីបង្កើនផ្នែកសុវត្ថិភាព និង ល្បឿនបាន។​ ចំណុចមួយទៀតគឺ components ដែលទាក់ទងនៅពេលមានការហៅប្រើប្រាស់ពី client មិនបាន​បង្ហាញអោយ client ឃើញនោះទេ។
  • Uniform Interface – លោក Fielding បាននិយាយថា “នេះគឺជាចំណុចសំខាន់ដែលធ្វើអោយ style របស់ REST Architecture មានភាពខុសប្លែកពី style នៃ network-based ដទៃទៀត”។ Uniform Interface រវាងcomponents គឺទិន្នន័យ ឬ ព័ត៌មានដែលបានបញ្ជូនគឺមានទម្រង់ត្រឹមត្រូវជាក់លាក់។ វាត្រូវការៈ  
    • Identification of Resources - resources ដែល client ស្នើរសុំគឺអាចសម្គាល់បាន និង អាចបែងចែកសម្រាប់ផ្ញើរទៅកាន់ client។
    • Manipulation of Resources Through Representations – resource អាចមានលក្ខណៈតំណាងនៅក្នុង server response ដែល client អាចប្រើប្រាស់ representations សម្រាប់កែប្រែ resources state នៅក្នុង server។
    • Self-Descriptive Messages - គ្រប់ resources ដែល represent គួរតែភ្ជាប់មកនូវជាមួយពត៌មាន ដែលទាក់ទងសំខាន់ៗ។
    • Hypermedia as the engine of application state – Client អាចធ្វើការដំបូងតាម URI នៃ application និង គួរតែ ទាញយក resources ពី server ដោយ dynamic តាមរយៈការប្រើប្រាស់ hyperlink។

បន្ថែមពីនេះផងដែរ យើងនឹងអាចជួបនូវ Web service នៅពេលធ្វើការប្រៀបធៀប Rest និង Restful ដូច្នេះយើងសូមធ្វើការពន្យល់អំពី Web service បន្តិចសិន ប៉ុន្តែយើងនឹងមិនធ្វើការប្រៀបធៀបវាជាមួយនឹង API ឡើយ។

Web service គឺជា បណ្តុំនៃ protocol និង standard ដែលប្រើទូទៅសម្រាប់ ផ្លាស់ប្តូរទិន្នន័យរវាង system ឬ application។ Web service ទាំងអស់ជា  API តែមិនមែនមានន័យថាគ្រប់ API សុទ្ធតែជា web service នោះទេ។

បន្ទាប់ពីអ្នកបានស្គាល់ អំពី API និង REST រួចហើយគឺយើងអាចធ្វើការប្រៀបធៀប Rest API និង Restful API បានហើយ

  • Web service ដែលគោរពទៅតាម architectural style របស់​ REST គឺជា Rest API
  • ចំណែកឯ Restful API គឺវា គោរពតាម ដូចទៅនឹង Rest API ដូចគ្នា គ្រាន់តែវាមានលើសនូវ additional features មួយចំនួនដែលយើងនឹង ធ្វើការវែកញែកនៅ ចំណុច បន្ទាប់

បញ្ជាក់: ចំពោះចំណុចទី១ នូវការប្រៀបធៀបខាងក្រោម គឺសម្តៅទៅលើ Rest API និង ចំណុចទី២ សម្តៅទៅលើ Restful API

Definition:

  • គេប្រើវាសម្រាប់អភិវឌ្ឍ API ដែលអាចអោយមានទំនាក់ទំនងរវាង client និង server ដោយមានលទ្ធភាពទាញយក ទិន្នន័យបានតាមរយៈ link ទៅកាន់ URL ណាមួយ
  • វាជា web application ដែលគោរពតាម REST infrastructure ដែលផ្តល់នូវការអាចផ្លាស់ប្តូរពត៌មាន ឬ ទិន្នន័យ បានរវាង system នៅលើ network ទាំងមូល

Web Services:

  • ដំណើរការនៃ URL គឺពឹងផ្អែកទៅលើ request និង response
  • ដំណើរការនៃ Restful គឺពឹងផ្អែកទាំងស្រុងទៅលើ Rest application

Bandwidth:

ចំពោះ bandwidth គឺ Restful API ប្រើប្រាស់តិចជាងក្នុងការដំណើរការ

Adaptability:

  • វាពិតជាអាចសម្របតាមទៅបានគ្រប់ business enterprises និង​ IT
  • វាសម្របបានដូចគ្នា និង រឹតតែមានភាពបត់បែនបើប្រៀបធៀបទៅជាមួយ Restless web services

Protocol:

  • មាន built-in architecture layer ដែលមាន protocol ខ្លាំង និង មានសុវត្ថិភាពខ្ពស់
  • មាន layer ច្រើននិងមាន transport protocol ដែលធ្វើអោយ system មានសុវត្ថិភាពតិចជា REST 

Data Format:

  • Data format គឺពឹងផ្អែកទៅលើ HTTP 
  • ពឹងផ្អែកទៅលើ JSON, HTTP​ និង Text

អ្នកបានយល់ច្បាស់ហើយអំពី API ក៏ដូចជា REST ផងដែរ។ យ៉ាងណាមិញ ការប្រៀបធៀប Rest API និង Restful API គ្រាន់តែស្ថិតនៅក្នុងកម្រិតមូលដ្ឋានប៉ុណ្ណោះ គឺមិនបានស៊ីជម្រៅទៅលើ architecture ឡើយ ហើយអ្វីដែលសំខាន់ការ develop របស់អ្នកគឺដើរទៅតាមតម្រូវការ និង ភាពរីកចម្រើនរបស់ business ប្រកបដោយសុវត្ថិភាព។