Symfony2: FOSRest: 允许路由 “/api/items” 和 “api/items/{id}”


Symfony2: FOSRest: Allow route for both "/api/items" and "api/items/{id}"

所以,我正在尝试使用Symfony2和FOSRestBundle创建一个简单的REST api。

进展非常顺利,但是我遇到了一堵墙,谷歌显然无法回答:)

我明白这一点:

public function getUsersAction(){
  return 'A list of all the users';
}

将创建如下路线:

  api_get_users              GET      ANY      ANY    /api/users.{_format}                       

我知道添加一个函数参数:

public function getUsersAction($id){
  return 'A specific users (with $id) details';
}

将创建如下路线:

  api_get_users              GET      ANY      ANY    /api/users/{userid}.{_format}              

但是,如果我想做到这一点,那么两条路由都可用(就像正确的 REST API 设计)怎么办?

我尝试做类似的事情

public function getUsersAction($userid = NULL){

但它没有奏效(不是一个巨大的惊喜)。

我很确定我错过了一个简单的拼图,但我不知道是什么。

根据文档,创建一个getUserAction($id)和一个getUsersAction()(不是复数)应该可以工作:

class UserController implements ClassResourceInterface
{
    // ...
    public function getUsersAction()
    {} // "get_users"     [GET] /users
    public function getUserAction($slug)
    {} // "get_user"      [GET] /users/{slug}
    // or when omittig "User":
    public function cgetAction()
    {} // "get_users"     [GET] /users
    public function getAction($slug)
    {} // "get_user"      [GET] /users/{slug}
    // ...
}