Bir API katmanı geliştirmek.

0 Cevap php

Benim uygulama için bir API katmanı geliştiriyorum. Ben bir yapı tasarlanmış ve bunun için bazı tavsiyeler / geribildirim ihtiyacı var. Sen alt yapının temel uygulanmasını bulabilirsiniz.

İşte yapısı için benim gereksinimleri şunlardır:

  • API komutları Tepki farklı biçimlerde (JSON, XML, vb) biçimlendirilmiş gerekebilir
  • Bazı API komutları kimlik doğrulama gerekebilir, bazı olmayabilir
  • Her API komut eklentileri (olaylar Bildirim, giriş / çıkış paramters filtreleme, vb) üzerinden uzantısı açık olmalıdır

Akılda bu gereksinimleri ile benim API katmanı Dekoratör model uyguladık. Ben yapı hakkına tasarlanmış varsa emin değilim ve bu konuda emin olmak gerekir.

Hala bunu nasıl anlamaya çalışıyorum çünkü ihtiyaç listesinde son öğe aşağıda uygulanması kapsamında değildir.

Sen ne düşünüyorsun? Ben doğru yolda mıyım?

<?php

// Interfaces
interface I_API_Command {}

// Abstract classes
abstract class A_API_Command implements I_API_Command
{
    abstract public function run();
}

abstract class A_Decorator_API_Command implements I_API_Command
{
    protected $_apiCommand;
    public function __construct(I_API_Command $apiCommand) {
        $this->_apiCommand = $apiCommand;
    }
    abstract public function run();
}

// Api command class
class APIC_Tasks_Get extends A_API_Command
{
    public function run() {
        // Returns tasks
    }
}

// Api command decorator classes
class APICD_Auth extends A_Decorator_API_Command
{
    public function run() {
        // Check authentication
        // If not authenticated: return error

        // If authenticated:
        return $this->_apiCommand->run()
    }
}

class APICD_JSON_Formatter extends A_Decorator_API_Command
{
    public function run() {
        return json_encode($this->_apiCommand->run());
    }
}

// Usage
$apiCommand = new APICD_JSON_Formatter(new APICD_Auth(new APIC_Tasks_Get()));
$apiCommand->run();

?>

0 Cevap