我正在考虑使用 Lucarast RESTler (http://luracast.com/products/restler/)
我的PHP类有一个名为"solve"的方法,它必须通过POST接受参数
class Solver
{
function solve( $request_data )
{
...
}
如果我简单地将该方法命名为"solve",则无法通过 POST 访问它。我得到404。
POST http://localhost/path/to/my/method 404 (Not Found)
显然我必须将其命名为"postSolve",这有效。或者创建另一个称为"postSolve"的方法,简单地调用"solve"。
public function postSolve( $request_data )
{
return $this->solve( $request_data );
}
但我不能停止思考,一定有一种优雅的方式来做到这一点。
我怎样才能随心所欲地调用我的方法,并且仍然可以通过 POST 访问它?
自动路由要求您在 api 方法名称前面加上 get
或 post
或 put
或 delete
以将其映射到相应的 HTTP 方法/动词
在此示例中对此进行了更多介绍
但是你总是可以在 api 方法上方使用以下格式的 PHPDoc 注释将任何方法映射到 POST
@url POST my/custom/url/:myvar
例如
class CustomPost
{
/**
* @url POST custom/:id
* @url GET custom
*/
function anyName($id)
{
//do something
}
}
在过去的
几天里,我对REST有了更多的了解。我不应该需要除了获取、发布、放置或删除之外的任何方法。
请参考另一个问题:了解 REST:谓词、错误代码和身份验证
"一般来说,当你认为你需要更多的动词时,它实际上可能意味着 您的资源需要重新识别。请记住,在 REST 中 您始终对资源或资源集合执行操作。 您选择的资源对您的 API 非常重要 定义。