2013-10-02 4 views
2

Symfony 2.3.4 및 FOSRestBundle 0.13.1을 사용하고 있습니다. FOSRestBundle에서 자동 생성 할 경로를 구성했습니다. Eveything은 @QueryParam 주석을 어떤 메서드에 추가 할 때까지 훌륭하게 작동합니다. 이 주석은 경로를 변경하고 urara에서 추출 할 수있는 대신 매개 변수로 전달 될 것으로 기대합니다.@QueryParam을 사용한 FOSRES 번들 경로

/** 
* @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 주석을 동시에 사용할 수 있습니까? QueryParam 주석을 사용하여

답변

2

, 당신은 $user 매개 변수가 쿼리 매개 변수 (같은 /api/user/details?user=foo)로 제공됩니다 선언, 그래서 더 이상 액션 매개 변수가 경로에 포함 남아 있지있다. 당신이 자동 생성 경로에 요구 사항을 추가하려면

, 당신은 strict 또는 nullable 옵션에 상응하는이 없음을

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

참고로, 대신 @Rest\Route 주석을 사용해야합니다. 요구 사항이 충족되지 않았거나 매개 변수가 누락 된 경우 경로는 단순히 일치하지 않으며 다른 경로가 요청과 일치하지 않으면 404 오류가 발생합니다. 또한 AFAIK에는 매개 변수를 라우트하는 설명을 첨부 할 수있는 방법이 없습니다.

관련 문제