Restler的自定义基本路径?

时间:2015-07-18 10:50:44

标签: php rest restler

当Restler未部署在域/子域的根目录时,为Restler使用自定义基本路径的建议/假设方式是什么?

我的网站有自己的路由,我在这里使用Restler 3.0:

http://www.example.com/api/data/movies

当它路由到/api/data/movies时,我让Restler负责:

class Say {
    function hello($to='world') {
        return "Hello $to!";
    }
    function hi($to) {
        return  "Hi $to!";
    }
}

use Luracast\Restler\Restler;
$r = new Restler();
$r->addAPIClass('Say', '/api/data/movies/say');
$r->handle();

然而,不知何故,它没有通过子路径传递给它的参数。见下文。

example.com/api/data/movies/say/hi

{
    "error": {
        "code": 400,
        "message": "Bad Request: `to` is required."
    },
    "debug": {
        "source": "Validator.php:366 at validate stage",
        "stages": {
            "success": [
                "get",
                "route",
                "negotiate"
            ],
            "failure": [
                "validate",
                "message"
            ]
        }
    }
}

example.com/api/data/movies/say/hi/Jim

{
    "error": {
        "code": 404,
        "message": "Not Found"
    },
    "debug": {
        "source": "Routes.php:431 at route stage",
        "stages": {
            "success": [
                "get"
            ],
            "failure": [
                "route",
                "negotiate",
                "message"
            ]
        }
    }
}

我试过谷歌,但发现与我的问题无关。我怎样才能使它工作?在子目录-URL而不是域/子域根目录下使用Restler的推荐/假设方式是什么?

2 个答案:

答案 0 :(得分:1)

根据Restler文档

您必须在网址请求中传递to参数,因此我认为您的网址应为example.com/api/data/movies/say/hi?to=test

但是如果您想添加自定义路由,请检查Restler Routing Works

的方式
  

此API服务器公开以下URI

     

说/ hi / {to}⇠Say:: hi()

我不熟悉Restler,但我希望这对你有帮助。

答案 1 :(得分:1)

由于自动路由需要将原始类型映射到url路径,因此在最近的版本中此行为已更改。对此感到抱歉,我们现在更新了文档!