我应该将类添加到 RESTful API 中吗?


Should I add classes to a RESTful API and why?

我创建了一个简单的网站,前端使用Angular,后端API使用Slim。我想知道类如何改进/阻碍 API。

示例类

class Job {
    public $title;
    public $company;
    public $location;
    public function __construct($title = '', $company = '', $location = '') {
        $this->title = $title;
        $this->company= $company;
        $this->location = $location;
    }
}

下面的代码工作正常,但我想知道我是否应该向 API 添加类,为什么?换句话说,这个类将如何发挥作用?

角度 - 路由 + 控制器

function config($routeProvider) {
    $routeProvider.when('/add-job', {
        templateUrl: 'templates/add-job.view.html',
        controller: AddController,
        controllerAs: 'addCtrl'
    });
};
function AddController($http) {
    var that = this;
    that.add_new = function (job) {
        $http.post('api/add_job', that.job).success(function () {
        });
    };
}

苗条 - PHP 服务

require 'vendor/autoload.php';
$app = new 'Slim'App; 
$app->post('/add_job', 'addJob');
$app->run();
function addJob($request) {
    $job = json_decode($request->getBody());
    $sql = "INSERT INTO jobs (title, company, location) VALUES (:title, :company, :location)";
    try {
        $db = getConnection();
        $stmt = $db->prepare($sql);  
        $stmt->bindParam("title", $job->title);
        $stmt->bindParam("company", $job->company);
        $stmt->bindParam("location", $job->location);
        $stmt->execute();
        $job->id = $db->lastInsertId();
        $db = null;
    } catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }
}

OOP将帮助您标准化数据。

在您提供的示例中,好处可能并不明显。但是,将来可能需要对参数进行一些检查。这些将最好放置在Job对象的构造函数中。然后,您将拥有一致的规则,无论您在代码的哪个部分实例化对象。

例如,您可能需要检索附加到公司的所有作业。使用 Job 对象的数组比处理表行或二维数组要容易得多。

我还建议将您的属性定义为private,并使用 setter 和 getter 来访问它们。