Kotchasan Framework Documentation

Kotchasan Framework Documentation

ApiController

TH 05 Feb 2026 06:23

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

คลาสที่เกี่ยวข้อง