Restler 的自定义基本路径?

Custom base path for 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();

但是,不知何故,它没有通过子路径获取传递给它的参数。见下文。

示例。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"
            ]
        }
    }
}

例子。com/api/data/movies/say/hi/吉姆

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

我尝试 Google 但没有找到与我的问题相关的内容。我怎样才能让它发挥作用?在子目录下使用 Restler 的推荐/假设方法是什么-URL 而不是域/子域根目录?

根据 Restler 文档

你必须在你的URL请求中传递to参数,所以我认为你的URL应该是example.com/api/data/movies/say/hi?to=test

但是如果你想添加自定义路由然后检查如何Restler Routing Works

This API Server exposes the following URIs

GET say/hi/{to} ⇠ Say::hi()

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

由于自动路由需要原始类型用于映射到 url 路径,此行为在最近的版本中发生了变化。抱歉造成混淆,我们现在更新了文档!