【问题标题】:FOSRESBundle routes with @QueryParam带有@QueryParam 的 FOSRESBundle 路由
【发布时间】:2013-10-02 16:55:59
【问题描述】:

我正在使用 Symfony 2.3.4 和 FOSRestBundle 0.13.1。 我已将路由配置为由 FOSRestBundle 自动生成。在我将 @QueryParam 注释添加到任何方法之前,一切都很好。这个注解改变了路由,而不是从 url 中提取变量,它希望它作为参数传递。

/**
* @return array
* @Rest\View
*/
public function getDetailsAction($user) {
......
}

-bash-4.2$ php app/console router:debug 
get_details      GET    ANY    ANY  /api/users/details/{user}

但是一旦我添加了@QueryParam 注释,我的路由就会变成:

/**
* @QueryParam(name="user", requirements="\w+", strict=true, nullable=false, description="Name of the user to query details for")
* @return array
* @Rest\View
*/
public function getDetailsAction($user) {
......
}

-bash-4.2$ php app/console router:debug 
get_details      GET    ANY    ANY  /api/users/details

为什么我的路线会改变?是不是不能在保留原有路由的同时使用@QueryParam注解?

【问题讨论】:

    标签: symfony fosrestbundle api-doc


    【解决方案1】:

    通过使用QueryParam 注释,您声明$user 参数作为查询 参数提供(如/api/user/details?user=foo),因此没有更多的操作参数可以包含在路线。

    如果你想为自动生成的路由添加需求,你必须使用@Rest\Route注解,如

    /**
     * @Rest\View
     * @Rest\Route(requirements={"user"="\w+"})
     */
    public function getDetailsAction($user) {
    -----
    }
    

    请注意,没有与 strictnullable 选项等效的选项。如果不满足要求或缺少参数,则路由根本不匹配,如果没有其他路由匹配请求,则会导致 404 错误。此外,AFAIK 无法将描述附加到路由参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 2021-02-08
      相关资源
      最近更新 更多