ตัวอย่างการสร้างและเรียกใช้ API ด้วยคชสาร ตอนที่ 1
ในตัวอย่างนี้ผมจะนำเสนอการสร้าง 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