使用RESTler,当它必须通过HTTP帖子接受参数时,我可以命名一个与post()或postSomething()不同的方法吗?

时间:2012-04-13 21:54:35

标签: php restler

我正在考虑使用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”的方法,简单地称之为“求解”。

public function postSolve( $request_data )
{
    return $this->solve( $request_data );
}

但我不能不认为必须有一种优雅的方式来做到这一点。

如何按照我的意愿调用我的方法,仍然可以通过POST访问它?

2 个答案:

答案 0 :(得分:2)

自动路由要求您使用getpostputdelete为api方法名称添加前缀,以将其映射到相应的HTTP方法/动词

有关详情,请参阅此example

但是你总是可以在api方法上面使用以下格式的PHPDoc注释来将任何方法映射到POST

@url POST my/custom/url/:myvar

例如

class CustomPost
{
    /**
     * @url POST custom/:id
     * @url GET custom
     */
    function anyName($id)
    {
        //do something
    }
}

答案 1 :(得分:1)

过去几天我学到了更多关于REST的知识。 我不应该需要除get,post,put或delete之外的任何方法。

请参阅其他问题: Understanding REST: Verbs, error codes, and authentication

  

“一般来说,当你认为你需要更多的动词时,它实际上可能意味着   您的资源需要重新识别。请记住,在REST中   您始终在资源或资源集合上行事。   您选择的资源对您的API非常重要   定义“。