ตัวอย่างการสร้างและเรียกใช้ API ด้วยคชสาร ตอนที่ 1
API เป็นจุดเด่นอย่างหนึ่งของคชสาร เนื่องจากคชสารเป็นเฟรมเวอร์คที่มีประสิทธิภาพสูงทำให้การสร้าง API ด้วยคชสารจะได้ประสิทธิภาพที่ดีกว่า สามารถรองรับจำนวนรีเควสพร้อมๆกันได้มากกว่าเฟรมเวอร์คอื่นๆ
ในตัวอย่างนี้ผมจะนำเสนอการสร้าง API อย่างง่ายๆ รวมถึงการใช้ประโยชน์จาก API แบบง่ายๆด้วย
ก่อนอื่นเรามาสร้าง API กันก่อน
1. ไฟล์ api.php เป็นไฟล์หลักสำหรับเรียก API ซึ่งก็จะมีโค้ดคล้ายๆกับไฟล์ index.php ที่เป็นไฟล์หน้าเว็บของคชสารทั่วๆไป สิ่งที่แตกต่างไปจากปกติคือ เราจะมีการกำหนด defaultController เป็น Index\Api\Controller แทน เนื่องจาก defaultController หลักเราจะใช้ในการเรียกตัวอย่างตามปกติ
2. ที่ Index\Api\Controller จะทำหน้าที่ในการรับค่าพารามิเตอร์ที่ส่งมาจาก URL แบบ GET แล้วส่งไปประมวลผลที่ Model ตามเมธอดที่เลือก เสร็จแล้วส่งค่ากลับเป็น JSON เป็นผลลัพท์ของ API
ในกรณีที่ไม่พบเมธอดที่ต้องการ จะคืนค่าข้อผิดพลาดเป็น JSON เช่นกัน
3. สุดท้ายคือ Model ที่ใช้ประมวลผลคำสั่งของ API ซึ่งตัวอย่างนี้จะมีเมธอด getTime ซึ่งเป็นเมธอดสำหรับแปลงค่า id ที่ส่งมาเป็นวันที่และเวลา
คำอธิบายการทำงานแต่ละบรรทัดอยู่ในโค้ดนะครับ สังเกตุได้ตามนั้นเลย และเราสามารถทดสอบการใช้งาน API ได้ด้วยการเรียกผ่าน URL ธรรมดาไปยัง api.php ตัวอย่าง https://www.kotchasan.com/projects/api/api.php?method=getTime&id=0123456789
อ่านต่อ ตัวอย่างการสร้างและเรียกใช้ API ด้วยคชสาร ตอนที่ 2
ในตัวอย่างนี้ผมจะนำเสนอการสร้าง API อย่างง่ายๆ รวมถึงการใช้ประโยชน์จาก API แบบง่ายๆด้วย
ก่อนอื่นเรามาสร้าง API กันก่อน
1. ไฟล์ api.php เป็นไฟล์หลักสำหรับเรียก API ซึ่งก็จะมีโค้ดคล้ายๆกับไฟล์ index.php ที่เป็นไฟล์หน้าเว็บของคชสารทั่วๆไป สิ่งที่แตกต่างไปจากปกติคือ เราจะมีการกำหนด defaultController เป็น Index\Api\Controller แทน เนื่องจาก defaultController หลักเราจะใช้ในการเรียกตัวอย่างตามปกติ
<?php
/**
* @filesource projects/api/api.php.
*
* @author Goragod Wiriya <admin@goragod.com>
* @link http://www.kotchasan.com/
* @copyright 2016 Goragod.com
* @license http://www.kotchasan.com/license/
*/
/**
* 0 (default )บันทึกข้อผิดพลาดร้ายแรงลง error_log .php
* 1 บันทึกข้อผิดพลาดและคำเตือนลง error_log .php
* 2 แสดงผลข้อผิดพลาดและคำเตือนออกทางหน้าจอ (ใช้เฉพาะตอนออกแบบเท่านั้น)
*/
//define('DEBUG', 0);
/**
* false (default)
* true บันทึกการ query ฐานข้อมูลลง log (ใช้เฉพาะตอนออกแบบเท่านั้น)
*/
//define('DB_LOG', false);
// load Kotchasan
include '../../Kotchasan/load.php';
// Initial Kotchasan Framework
$req = Kotchasan::createWebApplication();
$req->defaultController = 'Index\Api\Controller';
$req->run();
2. ที่ Index\Api\Controller จะทำหน้าที่ในการรับค่าพารามิเตอร์ที่ส่งมาจาก URL แบบ GET แล้วส่งไปประมวลผลที่ Model ตามเมธอดที่เลือก เสร็จแล้วส่งค่ากลับเป็น JSON เป็นผลลัพท์ของ API
<?php
/**
* @filesource index/controllers/api.php
* @link http://www.kotchasan.com/
* @copyright 2016 Goragod.com
* @license http://www.kotchasan.com/license/
*/
namespace Index\Api;
use \Kotchasan\Http\Request;
use \Kotchasan\Http\Response;
/**
* API Controller
*
* @author Goragod Wiriya <admin@goragod.com>
*
* @since 1.0
*/
class Controller extends \Kotchasan\Controller
{
/**
* method สำหรับตรวจสอบและประมวลผล API
*
* @param Request $request
*/
public function index(Request $request)
{
// method ที่ต้องการ
$method = $request->get('method')->toString();
// ตัวแปรสำหรับส่งค่ากลับ
$ret = array();
// ประมวลผล method ที่ต้องการ
if (method_exists('Index\Api\Model', $method)) {
$ret['result'] = call_user_func(array('Index\Api\Model', $method), $request);
} else {
// ข้อผิดดพลาด ไม่พบ method
$ret['error'] = 'Method not found';
}
// create Response สำหรับส่งค่ากลับ
$response = new Response;
// กำหนด header เป็น JSON+UTF-8
$response->withHeader('Content-Type', 'application/json; charset=utf-8')
// ข้อมูลที่ส่งกลับ
->withContent(json_encode($ret))
// ส่ง
->send();
}
}
ในกรณีที่ไม่พบเมธอดที่ต้องการ จะคืนค่าข้อผิดพลาดเป็น JSON เช่นกัน
3. สุดท้ายคือ Model ที่ใช้ประมวลผลคำสั่งของ API ซึ่งตัวอย่างนี้จะมีเมธอด getTime ซึ่งเป็นเมธอดสำหรับแปลงค่า id ที่ส่งมาเป็นวันที่และเวลา
<?php
/**
* @filesource index/models/api.php
* @link http://www.kotchasan.com/
* @copyright 2016 Goragod.com
* @license http://www.kotchasan.com/license/
*/
namespace Index\Api;
use \Kotchasan\Http\Request;
/**
* API Model
*
* @author Goragod Wiriya <admin@goragod.com>
*
* @since 1.0
*/
class Model
{
/**
* ฟังก์ชั่นแปลง id เป็นเวลา
*
* @param Request $request
* @return string
*/
public static function getTime(Request $request)
{
return \Kotchasan\Date::format($request->get('id')->toInt());
}
}
คำอธิบายการทำงานแต่ละบรรทัดอยู่ในโค้ดนะครับ สังเกตุได้ตามนั้นเลย และเราสามารถทดสอบการใช้งาน API ได้ด้วยการเรียกผ่าน URL ธรรมดาไปยัง api.php ตัวอย่าง https://www.kotchasan.com/projects/api/api.php?method=getTime&id=0123456789
อ่านต่อ ตัวอย่างการสร้างและเรียกใช้ API ด้วยคชสาร ตอนที่ 2