Kotchasan Framework Documentation
ApiController
ApiController
Kotchasan\ApiController เป็น Base Class สำหรับการสร้าง RESTful API ที่รองรับการจัดการ Request, Authentication, Validation และ Response มาตรฐาน
การใช้งานพื้นฐาน
สร้าง Controller ที่สืบทอดจาก Kotchasan\ApiController และ implement method index
namespace App\Api;
use Kotchasan\ApiController;
use Kotchasan\Http\Request;
class UserController extends ApiController
{
/**
* API Entry Point
* GET /api/v1/users
*/
public function index(Request $request)
{
// ตรวจสอบ Method
if (!self::validateMethod($request, 'GET')) {
throw new \Kotchasan\ApiException('Method Not Allowed', 405);
}
return $this->successResponse(['id' => 1, 'name' => 'Demo User']);
}
}Methods
Validation Methods (Static)
validateMethod(Request $request, string $method): bool
ตรวจสอบ HTTP Method
$request: Request object$method: Method ที่อนุญาต (e.g., 'GET', 'POST')- Throws: ไม่ throw exception แต่ return boolean
validateToken(string $token): bool (Verify in Source)
ตรวจสอบ API Token (ตรวจสอบกับ self::$cfg->api_token)
validateTokenBearer(Request $request): bool
ตรวจสอบ Bearer Token จาก Header Authorization
validateIpAddress(Request $request): bool
ตรวจสอบ IP Address ของ Client ว่าอยู่ในรายการที่อนุญาตหรือไม่ (self::$cfg->api_ips)
validateSign(array $params): bool
ตรวจสอบ Signature ของ Request (ใช้ self::$cfg->api_secret)
Response Methods
successResponse(mixed $data = null, string $message = 'Success', int $code = 200): Response
ส่งค่า Response แจ้งผลสำเร็จ (Status 200 OK)
errorResponse(string $message = 'Error', int $code = 400, Exception $error = null): Response
ส่งค่า Response แจ้งข้อผิดพลาด
formErrorResponse(array $errors, int $code = 400): Response
ส่งค่า Response แจ้งเตือนข้อผิดพลาดจาก Form Validation
notificationResponse(string $message): Response
ส่งค่า Response แจ้งเตือน (Notification only)
Authentication & Utility
getAccessToken(Request $request): ?string
ดึง Access Token จาก Request (Header หรือ Parameter)
validate(Request $request, array $rules): array
ตรวจสอบข้อมูล Request ตาม Rules ที่กำหนด
- Returns:
['isValid' => bool, 'errors' => array]
ตัวอย่างการใช้งาน
การตรวจสอบสิทธิ์แบบครบวงจร
public function action(Request $request)
{
// 1. ตรวจสอบ Method
if (!self::validateMethod($request, 'POST')) {
return $this->errorResponse('Method Not Allowed', 405);
}
// 2. ตรวจสอบ IP
if (!self::validateIpAddress($request)) {
return $this->errorResponse('IP Not Allowed', 403);
}
// 3. ตรวจสอบ Token
if (!self::validateToken($request->getHeaderLine('X-API-KEY'))) {
return $this->errorResponse('Invalid API Key', 401);
}
// Process...
return $this->successResponse(['status' => 'ok']);
}การตั้งค่า (Configuration)
สามารถกำหนดค่า Config ใน settings/config.php หรือกำหนดใน Runtime:
api_token: Token สำหรับตรวจสอบ (ใช้กับvalidateToken)api_secret: Secret Key สำหรับ Signature (ใช้กับvalidateSign)api_ips: Array ของ IP ที่อนุญาต (ใช้กับvalidateIpAddress)api_cors: Domain ที่อนุญาตให้ Cross-Origin Resource Sharing