2013-11-23 16 views
7

parametreleri için yollar ve ek açıklamaların @QueryParam() ek açıklaması ile GET parametrelerini alabiliyorum, ancak yalnızca Sorgu Dizesi verileri için çalıştığı anlaşılıyor: /user?id=123.FOSRestBundle:

Bunun yerine /user/123 olmasını tercih ediyorum. Bunun için, @Get("/user/{id}") ek açıklama kullanabilir, ama ben görmüyorum o @QueryParam() sahiptir ek meta vardır:

ParamFetcher parameter conflicts with a path parameter 'id' for route 'getone' 

:

name="id", requirements="\d+", default="1", description="User id" 

bir ek not hem kullanırsanız, bir hata alıyorum çakışan kısmı içermelidir:

/** 
* Finds and displays a Users entity. 
* 
* @Rest\View 
* @Rest\Get("/user/{id}") 
* @Rest\QueryParam(name="id", requirements="\d+", default="1", description="User id") 
* @ApiDoc(section="Partner Users") 
* @param int $id 
* @return array 
*/ 

PS I yolu (/user/123) değil, sorguda bir kimliğe sahip gerekiyor ve ben dekullanmak gerekir NelmioApiDocBundle tarafından okunduğu gibi. Bu sorunu nasıl çözebilirim?

cevap

16

FOSRestBundle en @Get açıklama uzanır sırayla SensioFrameworkExtraBundle en @Route uzanır FOSRestBundle en @Route.

code'a bir göz atın ve @Route and @Method belgelerine bakın.

requirements ve defaults öznitelikleri bir dizi bekler.

/** 
    * @Rest\View 
    * @Rest\Get("/user/{id}", requirements={"id" = "\d+"}, defaults={"id" = 1}) 
    * @ApiDoc(
    * description="Returns a User Object", 
    * parameters={ 
    *  {"name"="id", "dataType"="integer", "required"=true, "description"="User Id"} 
    * } 
    *) 
    */ 
public function getAction($id) 
{ 
    // ... 
} 
+0

nifr bunu! Tek şey hoş görünmüyor, tek parametrenin iki kez, 'Get' ve '@ ApiDoc' olarak tanımlanmış olmasıdır. –

+0

'Parametreler' bölümünü '@ ApiDoc' kısmından bırakırsanız ve '@param integer $ id kodunu buraya ekleyin' ifadesinin altına aşağıdan bakın. – lopsided

1

Eğer gereksinimleri için bir açıklama istiyorsanız sadece yardım için, Ek açıklamanızda sayesinde

/** 
    * @Rest\View 
    * @Rest\Get("/user/{id}", requirements={"id" = "\d+"}, defaults={"id" = 1}) 
    * @ApiDoc(
    * description="Returns a User Object", 
    * requirements={ 
    *  {"name"="id", "dataType"="integer", "required"=true, "description"="User Id"} 
    * } 
    *) 
    */