PHP Programer  - 讨论区

标题:非常精巧的REST API Framework: Restler

2014年03月25日 星期二 11:37

Restler(2.x版本)是一个非常精巧的REST API Framework,精巧到什么程度呢?它只有一个PHP文件,这个PHP文件只有大约1500行左右,包含非常详细的注释,体积在46KB左右。

只需要这样一个PHP文件,我们就可以将普通的PHP Class封装为标准的REST API,非常简单好用。Restler默认支持JSON结构的数据格式,通过插件扩充,可以支持XML、YAML等等多种数据格式。

Restler的3.x版本目前是RC状态,代码结构比2.x版本要复杂很多。我很喜欢2.x版本的简洁风格,虽然代码年代稍有些久远(最后更新大概是2011年)。

我们首先编写一个计算器的Class(calc.php):

<?php
class Calc {
    public $restler;
    public function add($a=0,$b=0) {
        $this->_validate(func_get_args());
        return array("result" => $a+$b);
    }
    public function sub($a=0,$b=0) {
        $this->_validate(func_get_args());
        return $a-$b;
    }
    public function abs($a=0) {
        $this->_validate(func_get_args());
        return abs($a);
    }

    private function _validate($numbers) {
        foreach($numbers as $num) {
            if(!is_numeric($num)) {
                throw new RestException(400,"parameter is not a number");
            }
            if(is_infinite($num)) {
                throw new RestException(400,"parameter is not finite");
            }
        }
    }
}

然后编写一个gateway封装(api.php):

<?php
spl_autoload_register('spl_autoload');
$r=new Restler();
//$r->setSupportedFormats('JsonFormat', 'XmlFormat');
$r->addAPIClass('Calc');
$r->handle();

接下来我们就可以通过URL调用Calc的API了,示例URL如下:

http://localhost/restler2/api.php/calc.json/add/1/1

如果启用WEB服务器的URL Rewrite,上面的URL还可以更简洁。

参考资料:

https://github.com/Luracast/Restler/tree/v2

http://help.luracast.com/restler/examples/index.html

 

 

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号