• หน้าแรก
  • หลักสูตร
  • บทความ
  • ร้านค้า
  • ติดต่อเรา
    มีคำถามเกี่ยวกับ odoo ?
    (02) 4302475
    info@odoothaidev.com
    Login
    Odoothaidev - We are Odoo professional in Thailand
    • หน้าแรก
    • หลักสูตร
    • บทความ
    • ร้านค้า
    • ติดต่อเรา

      API

      • บ้าน
      • บล็อก
      • API
      • การพัฒนา API อย่างมืออาชีพ และทำไมต้อง RESTful Service

      การพัฒนา API อย่างมืออาชีพ และทำไมต้อง RESTful Service

      • โพสโดย admin
      • หมวดหมู่ API
      • วันที่ กรกฎาคม 26, 2019
      • ความคิดเห็น 0 ความคิดเห็น
      • แท็ก api

      API คืออะไร?
      API ย่อมาจาก Application Programming Interface คือการพัฒนาโปรแกรมสำหรับเป็นส่วนติดต่อเซอร์วิสของแอพพลิเคชั่น หรือโมดูลต่างๆ เพื่อให้คนภายนอกมาเรียกใช้งาน หรือกล่าวอย่างง่ายๆ ก็คือการเขียนโปรแกรมเพื่อให้บริการสำหรับให้คนอื่นมาเรียกใช้งาน ซึ่งแนวคิดเรื่องการสร้าง API เพื่อการใช้งานก็มีมาอย่างยาวนานแล้ว ยกตัวอย่างเช่นตั้งแต่ที่มีการสร้างระบบปฎิบัติการ (OS) ก็จะมีการติดต่อ API ของไดร์เวอร์อุปกรณ์ฮาร์แวร์ต่างๆ ของเครื่องคอมพิวเตอร์เพื่อเรียกใช้งานอุปกรณ์นั้นๆ ตามคำสั่งของนักพัฒนา

      API ได้รับการกล่าวถึงและอ้างอิงอีกครั้งในรูปแบบของเว็บเซอร์วิสเทคโนโลยี (Web Service) ซึ่งก็คือเราสามารถพัฒนาแอพพลิเคชั่นที่ให้บริการข้อมูลบนโปรโตคอล HTTP โดยใช้หลักการและแนวคิดของ API เพื่อให้คนภายนอกมาเรียกใช้งาน คำถามก็คือว่าทำไมเราต้องเพิ่ม API ลงในระบบของเรา? มีเหตุผล 3 ข้อ คือ

      • เราต้องการเปิดให้โมดูลหรือระบบอื่นๆ เข้ามาเรียกใช้ข้อมูลของเราได้
      • เราต้องการเตรียมข้อมูลให้เว็บไซต์ในรูปแบบ Asynchronous เช่น การใช้ AJAX
      • เราต้องการเตรียมโครงสร้างพื้นฐานสำหรับการทำสถาปัตยกรรมเชิงเซอร์วิส หรือ SOA (Service-Oriented Architecture)

      จะเห็นได้ว่าเหตุผลข้างต้นทั้ง 3 ข้อ เป็นแรงผลักดันที่ดีสำหรับการให้ระบบของเราควรจะมี API ซึ่งแน่นอนว่าระบบสมัยใหม่ควรจะเตรียม API ไว้สำหรับเชื่อมต่อกับระบบอื่นๆ เพื่อลดความซ้ำซ้อนของการพัฒนาระบบ เพื่อความเป็นเอกภาพของข้อมูล และการนำข้อมูลไปใช้งานต่อให้เกิดประโยชน์สูงสุด โดยการต่อยอดความสามารถของระบบให้ตรงตามความต้องการของผู้ใช้งาน

       

      หลักคิดในการพัฒนา API

      ต้องเข้าใจก่อนว่าเทรนการพัฒนาเว็บแอพพลิเคชั่นในยุคปัจจุบันนั้นเปลี่ยนแปลงไปจากเมื่อก่อนเป็นอย่างมาก เนื่องด้วยการเติบโตอย่างก้าวกระโดดของโมบายดีไวซ์ก็คือโทรศัพท์มือถือแบบสมาร์โฟน โดยเฉพาะการที่โทรศัพท์มือถือสามารถเข้าถึงอินเตอร์เน็ตได้ การทำให้เว็บแอพพลิเคชั่นจะต้องสามารถแสดงผลได้อย่างรวดเร็วและได้ทุกขนาดหน้าจอจึงเป็นเรื่องยากลำบากมากในช่วงแรก แต่ ณ ปัจจุบันปัญหาเหล่านี้ก็ค่อยๆ ลดลงอย่างต่อเนื่องเพราะมีผู้คิดค้นเครื่องมือการพัฒนาเว็บแอพพลิเคชั่นทั้ง Framework, Library และออกแบบสถาปัตยกรรมที่เหมาะสมกับโมบายแอพพลิเคชั่นโดยเฉพาะ

      แท้จริงแล้วหัวใจหลักของการพัฒนา API คือการใช้แนวคิดด้านสถาปัตยกรรมเชิงเซอร์วิส  SOA (Service-Oriented Architecture) เพื่อประยุกต์ใช้ออกแบบที่จะดึงความสามารถศักยภาพให้เว็บแอพพลิเคชั่นสามารถตอบโจทย์ปัญหาในยุคที่ไคลเอนต์ (Client) ที่มีจำนวนมหาศาลและหลากหลาย หากวันนี้ถ้ายังคงใช้แนวคิดและวิธีการแบบเดิมๆ เชื่อว่าเว็บแอพพลิเคชั่นอย่าง Facebook  คงยังไม่สามารถรองรับผู้ใช้งานมหาศาลจำนวนกว่าหนึ่งพันห้าร้อยล้านจากคนทั่วโลกได้

      Capturenew

      SOA จะถูกสร้างอยู่บนชั้นของเซอร์วิสในที่นี้คือ Application Service Layer ซึ่งเป็นที่รวมของฟังก์ชั่นการทำงานของระบบ และเซอร์วิสเหล่านั้นจะไม่มีการเชื่อมต่อกับส่วนแสดงผลโดยตรง นั้นแสดงว่าในส่วงของการแสดงผล (Presentation Layer) จะเป็นอะไรก็ได้ ไม่ว่าจะเป็นหน้าเว็บบน PC, iPhone App, Android App หรือ ระบบอื่นๆ ดังรูป ทำให้ระบบมีความยืดหยุ่นและสามารถขยายตัวได้อย่างสูง สามารถรองรับการโหลดของไคลเอนต์ ได้อย่างไม่จำกัดและมีประสิทธิภาพ เช่น การยกเอาชั้นเซอร์วิสไปรันไว้บนการประมวลผลแบบกลุ่มเมฆ (cloud) เพื่อให้เกิดการขยายตัวได้อย่างสูงสุด

       

      ประเภทของเซอร์วิส

      กล่าวมาถึงตรงนี้หลายท่านคงยังนึกภาพไม่ออก เพื่อให้เห็นภาพอย่างได้ชัดเจนมากยิ่งขึ้นขอยกตัวอย่าง เช่น ปกติแล้วถ้าเราต้องการสร้างเว็บไซต์ซักหนึ่งเว็บเพจ เพื่อให้คนทั่วไปได้อ่านและเข้าใจได้เราต้องใช้ภาษา HTML ในการสร้างและแสดงผลหน้าเว็บ แต่ถ้าเราต้องการสร้างเว็บเซอร์วิสเป้าหมายของเราจะไม่ใช่คนทั่วๆไปแล้ว แต่จะเปลี่ยนเป็นเครื่องคอมพิวเตอร์มาอ่านแล้วเข้าใจแทน ซึ่งต้องเปลี่ยนจาก HTML เป็นรูปแบบของ JSON หรือ XML แทน ที่เป็นรูปแบบของข้อมูลมาตรฐานเพื่อใช้แลกเปลี่ยนระหว่างกันของระบบคอมพิวเตอร์

      นอกเหนือจากนักพัฒนาเว็บเซอร์วิสจะต้องมีความรู้ของรูปแบบของข้อมูล JSON หรือ XML แล้ว นักพัฒนาจะต้องมีความรู้ความเข้าใจศึกษาเรื่องรายละเอียดกระบวนการทำงานพื้นฐานของ HTTP ซึ่งเปรียบเสมือนตัวกลางที่ใช้สำหรับรับส่งข้อมูลของเว็บรีเควสต์ (Request) และเรสพอนต์ (Response) โดยเราจะอาศัยข้อมูลที่ถูกส่งซึ่งประกอบด้วยเมต้าเดต้าจำนวนมากมาใช้เป็นข้อมูลพื้นฐานในการสร้างออกแบบเว็บเซอร์วิส ได้แก่ รหัสสถานะของ HTTP, Header HTTP, คำสั่ง ของ HTTP เป็นต้น ซึ่งผมไม่ขอลงรายละเอียดสำหรับเรื่องนี้นะครับ

      ประเภทของเว็บเซอร์วิสโปรโตดคอลที่ทำงานอยู่บน HTTP ที่ได้รับความนิยมปัจจุบัน ได้แก่

      • RPC การทำงานจะเหมือนการเรียกใช้ฟังก์ชั่นและการส่งพารามิเตอร์ไปให้ตรงตามจำนวนที่เว็บเซอร์วิสต้องการ ซึ่งเราจะเห็นการทำงานของ RPC ในรูปแบบของ XML-RPC หรือ JSON-RPC
      • SOAP (Simple Object Access Protocol) เป็นเซอร์วิสที่ต่อยอดมาจาก XML-RPC มีมาตรฐานการร่างเซอร์วิสที่เป็นทางการ ตัวเซอร์วิสของ SOAP จำเป็นต้องมี WSDL (Web Service Description Language) เพื่อใช้อธิบายฟังก์ชั่นการทำงานของเว็บเซอร์วิสนั้น ปัจจุบันโปรแกรมมิ่งหลายๆ ภาษาได้เตรียมไลบราบี่สำหรับการทำงานกับ SOAP เพื่ออำนวยความสะดวกไม่ให้มันใช้งานยากจนเกินไป
      • REST (REpresentational Sate Transfer) มันเองไม่ใช่โปรโตคอล กล่าวได้ว่า REST เป็นเรื่องของหลักการออกแบบมากกว่า เพราะตัวมันเป็นอินเตอร์เฟส และพร้อมทั้งมีฟอร์แมตของข้อมูลตัวเอง (ในความเข้าใจของผม REST คือการประยุกต์ความรู้และต่อยอดความสามารถของ HTTP บวกความรู้การออกแบบเรื่อง Design Pattern โดยใช้รูปแบบข้อมูล JSON เป็นหลักในการดำเนินงาน)โดยที่ REST เองจะมีส่วนประกอบหลัก 2 ตัวคือ รีซอร์ส (Resource) และแอกชั่น (Action) ที่สามารถทำได้กับรีซอร์สนั้นๆ โดยแอกชั่นเหล่านั้นจะเกิดขึ้นได้ด้วยการส่งเวิร์บ (Verb) ที่ถูกต้องมาที่รีซอร์นั้นๆ

      เทรนของการใช้เซอร์วิส ณ ปัจจุบัน รูปแบบเซอร์วิสด้วยแนวคิดแบบ REST เป็นที่นิยมอย่างกว้างขว้างนั้นคือ “RESTful Service” ด้วยเหตุผลเพราะด้วยความเรียบง่ายเรื่องกระบวนการทำงาน โดยใช้ความสามารถของ HTTP ซึ่งเป็นพื้นฐานของเทคโนโลยีเว็บซึ่งสามารถทำงานได้ทุกแพตฟอร์มอยู่แล้ว โดยตัว REST เองเป็นกระบวนการเปิดซอร์วิส CRUD (Create, Read*, Update, Delete) มีความสัมพันธ์กับข้อมูลที่แข็งแกร่งมาก จุดเด่นสำคัญในเรื่องของการออกแบบมาเพื่อให้ lightweight คือมีน้ำหนักเบา เหมาะที่จะถูกนำไปเป็นชั้นของเซอร์วิสในสถายปัตยกรรมเชิงเซอร์วิสเป็นอย่างมาก ทำให้การใช้ทรัพยากรและพลังงานของเครื่องแม่ข่ายน้อยมากเมื่อเปรียบกับแบบอื่น และรองรับการเรียกใช้งานของเครื่องลูกข่ายได้เป็นจำนวนมาก

       

      สรุปสุดท้ายทำไมต้อง RESTful

      สิ่งที่เหนือกว่าคือ url ที่สวยงาม การเรียกใช้งานเซอร์วิสสามารถทำผ่านได้ง่ายจาก URL สาเหตุที่ต้องใช้ URL เพราะใน RESTful จะมองข้อมูลที่ให้บริการเป็นรีซอร์ส (resource) เหมาะสมกับยุคของข้อมูลในปัจจุบันที่มีรูปแบบของข้อมูลที่หลากหลายโดยเฉพาะการเก็บข้อมูลลงในฐานข้อมูลแบบ NoSQL ซึ่งจะเรียกว่าคอลเล็กชั่น ตัวอย่างเช่น คอลเล็กชั่น user, product, order, category (ให้ลองศึกษาเรื่องของ NoSQL เพื่อให้เข้าใจยิ่งขึ้น)

      ตัวอย่างการใช้งาน (ผลลัพท์จะเป็นรูปแบบข้อมูล JSON) เช่น

      -ต้องการดึงข้อมูลของสินค้าทั้งหมด

      http://exmaple.com/product/

      -สำหรับรีซอร์สตัวใดตัวใดตัวหนึ่งที่จำเพาะเจาะจง เช่น ดึงข้อมูลของสินค้าที่มีรหัสลำดับที่ 72

      http://exmaple.com/product/72

      -และหากต้องการดึงอิลิเมนต์ย่อยภายใต้ตัวหลักออกมา เช่น ดึงข้อมูลของสินค้าที่มีรหัสลำดับที่ 72 และดูเฉพาะชื่อสินค้า

      http://exmaple.com/product/72/name

      ทั้งหมดนี้เป็นเรื่องราวส่วนหนึ่งของการพัฒนาเซอร์วิสแบบ RESTful ซึ่งยังมีรายละเอียดในส่วนอื่นๆ อีกมากมาย ซึ่งปัจจุบันมีนักพัฒนาได้สร้างเครื่องมือหรือที่เรียกว่า Framework สำหรับสร้าง RESTful ขึ้นมาโดยเฉพาะสามารถให้นำไปใช้งานกันได้อย่างสะดวกสบาย เช่น Slim Framework และมีตัวอื่นๆ อีกมากมายที่ได้รับความนิยม ลองค้นหาใน Google โดยใช้คำค้นว่า “Micro Framework” ตอนหน้าจะเป็นตัวอย่างการพัฒนา RESTful แบบง่ายๆ ด้วยภาษา PHP แต่ทั้งนี้ตัว RESTful เองสามารถพัฒนาได้หลากหลายภาษาที่ได้รับความนิยม ได้แก่ JavaScript, Python เป็นต้น รวมไปถึงหลักการพื้นฐานและการสร้างความปลอดภัยให้กับตัวเซอร์วิส RESTful ด้วยครับ ?

       

      (*แหล่งข้อมูลเขียน Replace แต่จะประสบการณ์ของผู้เขียนน่าจะเป็น Read มากกว่า)

      ข้อมูลอ้างอิง:

      มิทเชลล์ ลอร์นา. เขียนโค้ค PHP อย่างมืออาชีพ. กรุงเทพฯ: ซีเอ็ดยูเคชั่น, 2556 (หน้า 91-140)

      แท็ก:api

      • Share:
      อวตารของผู้เขียน
      admin

      โพสต์ก่อนหน้า

      JSON-RPC กับภาษา Python
      กรกฎาคม 26, 2019

      โพสต์ถัดไป

      BUSINESS INTELLIGENCE SOLUTIONS
      กรกฎาคม 27, 2019

      ทิ้งคำตอบไว้

      อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

      ค้นหาบทความ

      หมวดหมู่

      หมวดหมู่

      • Accounting
      • Adobe XD
      • API
      • Blog
      • Business
      • Buttons
      • CRM
      • Custom Fields
      • Design / Branding
      • Django
      • Ecommerce
      • ERP
      • ERP Flow
      • Express
      • Flectra
      • Form View
      • Frontend
      • Github
      • Github
      • Grant Chart
      • Header
      • iReport
      • Jasper Server & Server
      • Jaspersoft Studio
      • Java
      • JSON-RPC
      • Lazada
      • Linux
      • MLM
      • MRP
      • Nignx Proxy
      • NodeJS
      • Odoo 10
      • Odoo 12 Module
      • Odoo 13
      • Odoo 14 Development
      • Odoo 16
      • Odoo 8
      • Odoo 9
      • Odoo API
      • Odoo Certification
      • Odoo Developer
      • Odoo Ebook
      • Odoo Enterprise
      • Odoo ERP
      • Odoo Event
      • Odoo Implement
      • Odoo Inventory
      • Odoo Report
      • Odoo V15
      • Open Source
      • Open-office
      • OpenERP 7.0
      • PhantomJS
      • Postgres SQL
      • Programming Language
      • Project Management
      • Python
      • Python3
      • Qweb
      • Reporting ระบบรายงาน
      • RML Report
      • Search View and Filters
      • Social Network
      • Statusbar
      • Ubuntu
      • Uncategorized
      • Voip & Call Center
      • Warehouse Management
      • WMS
      • Woocommerce
      • Workflow
      • XML-RPC
      • การ Implement
      • การเก็บข้อมูล Pre-Requirement
      • การเตรียมตัวเพื่อใช้งาน erp
      • ความรู้ด้านการตลาด CRM
      • ธีมเว็บไซต์ Odoo
      • ธุรกิจบริการ
      • ธุรกิจประเภทจัดอบรมสัมมนา
      • ธุรกิจสิ่งพิมพ์
      • นักพัฒนา
      • ประเภทธุรกิจที่เหมาะกับ Odoo
      • ระบบบัญชี
      • ระบบเคลม
      • ลิขสิทธิ์ – License
      Introduction LearnPress – LMS plugin

      Introduction LearnPress – LMS plugin

      Free
      From Zero to Hero with Nodejs

      From Zero to Hero with Nodejs

      Free
      Learn Python – Interactive Python

      Learn Python – Interactive Python

      $69.00

      บทความล่าสุด

      V16 Planned Date of Tasks are invisible.
      12ก.พ.2023
      Odoo Implement Methodology
      29พ.ย.2022
      Odoo Enterprise Subscription Agreement
      29พ.ย.2022
      (02) 430-2475
      info@odoothaidev.com
      Facebook Twitter Google-plus Pinterest

      Odoothaidev by OdooTeaM.

      • Privacy
      • Terms
      • Sitemap
      • Purchase

      เข้าสู่ระบบด้วยบัญชีเว็บไซต์ของคุณ

      ลืมรหัสผ่าน?

      Click to Copy