ก็เลยตั้งใจไว้ว่า ตอนนี้ จะเป็นตอนสุดท้ายแล้วล่ะครับ ที่ผมจะเขียนถึง 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
-
<?php
-
class Rest extends Controller {
-
-
function __construct()
-
{
-
parent::Controller();
-
}
-
-
function index()
-
{
-
require(Zend/Rest/Server.php);
-
$this->load->model(Api_model);
-
-
$server = new Zend_Rest_Server();
-
$server->setClass(Api_model);
-
$server->handle();
-
}
-
-
}
-
?>
โคดในส่วนนี้ผมทำการเรียก Zend ในส่วนของ Rest Server ขึ้นมาใช้งาน จากนั้นผมไปสร้าง model ให้กับ CI และ load ขึ้นมา แล้วก็ทำการ assign class จาก model ทั้งหมดลง CI ด้วย method ที่ชื่อว่า setClass เรียก handle ขึ้นมา เท่านี้เองครับ!
ง่ายดีมั้ยล่ะครับ เพราะว่านี่มันแค่ขึ้นโครงเอง 555+
ที่ลำบากจริงๆ มันคือการ implement methods ให้กับ ชุด api ของเราต่างหาก
ไปดูกันที่ model เลย .
ที่ models/api_model.php
ผมก็ไปทำการสร้าง method ที่จะให้ developer อื่นๆ นำไปใช้งานเช่น
-
<?php
-
class Api_model extends Model {
-
-
function __construct()
-
{
-
parent::Model();
-
}
-
-
function helloworld($var1=, $var2=)
-
{
-
}
-
-
}
-
?>
จากนั้นพอเราจะใช้งานเราก็เรียก
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/
