【发布时间】:2014-12-02 14:15:56
【问题描述】:
我正在使用 Restler 3,并且正在尝试一个非常基本的 URL 路由:
GET /method/{param}
我的 api 类方法将 param 作为第一个必需参数,但只有当我通过请求传递它时他才会得到它 (GET /method?param=value)
从路由文档(链接:http://restler3.luracast.com/examples/_006_routing/readme.html)看来,这应该是默认行为。我也尝试过使用Defaults::$smartAutoRouting = false;,但这似乎不起作用。
从 Restler 3 开始,在可选的地方创建智能自动路线 参数将被映射到查询字符串,必需的原始类型 将被映射到 url 路径,对象 ana 数组将被映射到 请求正文。
【问题讨论】:
-
只是为了确定,您使用的是以下格式吗?
@url GET /method/{param}使用 RC5 还是 RC6? -
@Luracast 我不确定。你能解释一下 RCx 是什么,我怎么知道是哪一个?您的格式(添加 @url)部分适用于我,它确实将 {param} 路由到所需的参数,但它从 API-explorer 中删除了可选参数并添加了
REQUEST_BODY。 -
更具体地说,如果我的方法看起来像:
function foo($reqParam, $optionalParam1=null, $optionalParam2=null)并且我放了一个 phpdoc@url GET /{reqParam}/methodoptionalParam1和optionalParam2不会作为可选字段出现在 API 资源管理器中,而是添加了REQUEST_BODY。 -
您可以通过打开 Restler.php 文件并查看其 cmets 来找到版本。或通过 X-Powered-By 标头。从您上面的评论中,我可以确认您使用的是 RC5。此错误已在 github 的 V3 分支中的 RC6 中修复。当我们在 RC5 中修复它时,您可以将它与新的 Explorer 类一起使用。感谢您报告问题:)
标签: php api routing url-routing restler