我正在考虑使用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访问它?
答案 0 :(得分:2)
自动路由要求您使用get
或post
或put
或delete
为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非常重要 定义“。