มาทำ Web Service ด้วย PHP กัน


หน้าแรก Web Service มาทำ Web Service ด้วย PHP กัน

เอาล่ะครับ ในที่สุดก็มาเขียนต่อกันซะทีสำหรับ CI ตอนสุดท้ายที่จะเขียน สาเหตุก็เพราะ ผมขี้เกียจอธิบาย เอง อิอิ เพิ่งรู้ว่า เวลาเขียนอธิบาย Server Side Script มันลำบากกว่า Client Side Script เอามากๆ เลย เพราะมันต้องอธิบาย ลงไปถึง Environment อื่นๆ ของมันอีกด้วย ไม่ใช่แบบ หยิบจับมา บอกเล่าได้เลย รวมไปถึงตอนนี้ สะสมเทคนิคใหม่ๆ ของ jQuery ไว้เพียบ และยังไม่ได้มาพูดถึงกัน

ก็เลยตั้งใจไว้ว่า ตอนนี้ จะเป็นตอนสุดท้ายแล้วล่ะครับ ที่ผมจะเขียนถึง CI

เรื่องที่จะมาพูดกันไว้นี้ ก็คือเรื่อง Web Service ครับ แต่ไม่ได้พูดถึงการติดต่อกับ API ของเว็บไซต์ เจ้าดังๆ เจ้าไหน แต่จะมาพูดถึงการสร้าง ต่างหาก

สำหรับคนที่ศึกษาเรื่อง API มาบ้าง คงจะพอเข้าใจว่ามันมี Protocol ที่เป็นที่นิยมหลักๆ ก็คือ SOAP, REST, XML-RPC สำหรับ API ของ Client Script ที่นิยอีกตัวก็คือ JSONP

ถ้าจะให้ผมพูดถึงทุกตัว วันนี้ผมคงไม่ได้นอนเป็นแน่ [0.17] ก็จะขอพูดถึง เรื่องที่จะเขียนเลยแล้วกัน นั่นก็คือ REST Protocol ครับ โดยที่จะใช้ Zend มาเป็น Core Lib ในการทำงาน [ถ้าใครยังไม่เคย plug Zend ลงใน CI ไป อ่านบทความย้อนหลังครับ]

เพื่อไม่ให้เป็นการเสียเวลา ผมขอลงมือ โคดไปเลยแล้วกัน

ก่อนอื่นผมจะสร้าง Dir แบบนี้ก่อน

[app]/controller/api/rest.php

  1. <?php
  2. class Rest extends Controller {
  3.  
  4.         function __construct()
  5.         {
  6.                 parent::Controller();
  7.         }
  8.  
  9.         function index()
  10.         {
  11.                 require(‘Zend/Rest/Server.php’);
  12.                 $this->load->model(‘Api_model’);
  13.  
  14.                 $server = new Zend_Rest_Server();
  15.                 $server->setClass(‘Api_model’);
  16.                 $server->handle();
  17.         }
  18.  
  19. }
  20. ?>

โคดในส่วนนี้ผมทำการเรียก Zend ในส่วนของ Rest Server ขึ้นมาใช้งาน จากนั้นผมไปสร้าง model ให้กับ CI และ load ขึ้นมา แล้วก็ทำการ assign class จาก model ทั้งหมดลง CI ด้วย method ที่ชื่อว่า setClass เรียก handle ขึ้นมา เท่านี้เองครับ!

ง่ายดีมั้ยล่ะครับ เพราะว่านี่มันแค่ขึ้นโครงเอง 555+

ที่ลำบากจริงๆ มันคือการ implement methods ให้กับ ชุด api ของเราต่างหาก

ไปดูกันที่ model เลย….

ที่ models/api_model.php

ผมก็ไปทำการสร้าง method ที่จะให้ developer อื่นๆ นำไปใช้งานเช่น

  1. <?php
  2. class Api_model extends Model {
  3.  
  4.         function __construct()
  5.         {
  6.                 parent::Model();
  7.         }
  8.  
  9.         function helloworld($var1=”, $var2=”)
  10.         {
  11.                 return array($var1, $var2);
  12.         }
  13.  
  14. }
  15. ?>

จากนั้นพอเราจะใช้งานเราก็เรียก
http://localhost/yourapp/api/rest?method=helloworld&var1=aaaa&var2=bbb

โดยที่ helloword ก็คือชื่อ method ส่วน parameter ก็ส่งไปตามที่เรากำหนดไว้ เรื่อง xml ตัว fw ของ zend จะเป็นคนจัดการให้

ถ้าสนใจข้อมูลในเชิงลึกก็ขอให้ไปลองอ่านกันได้ที่ Zend Rest Server ซึ่งจะมีวิธีใช้งานที่ค่อนข้างละเอียด(มั้ง) ให้อ่านกัน

หรือถ้าสนใจจะทำ Protocol XML-RPC ไม่ต้องมองหาไกลครับ ใน CI เองก็มี และค่อนข้างใช้ง่ายมากๆ เลยด้วย
http://codeigniter.com/user_guide/libraries/xmlrpc.html

เอาล่ะครับ ผมก็ขอฝากให้ศึกษากันต่อตามสะดวกเลยแล้วกันนะครับ ส่วน jQueryTips.com จะกลับมาสู่ Version ปกติ ก็คือ เน้นแต่เื่องของ jQuery เหมือนเดิมแล้วครับ ^^

refer: http://www.jquerytips.com/2009/02/25/ci-web-service/



ขึ้นไปด้านบน