使用 RESTler,当一个方法必须通过 HTTP post 接受参数时,我可以将它命名为 post() 或 postS


Using RESTler, can I name a method something different than post() or postSomething() when it must accept arguments via an HTTP post?

我正在考虑使用 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 方法名称前面加上 getpostputdelete 以将其映射到相应的 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 非常重要 定义。