2013-11-23 6 views
7

मैं @QueryParam() एनोटेशन के साथ पैरामीटर प्राप्त करने में सक्षम हूं, लेकिन ऐसा लगता है कि यह केवल क्वेरी स्ट्रिंग डेटा के लिए काम करता है: /user?id=123FOSRestBundle: पैरामीटर के लिए मार्ग और एनोटेशन

मैं इसे /user/123 की बजाय पसंद करना चाहता हूं। इस के लिए, मैं @Get("/user/{id}") एनोटेशन का उपयोग कर सकते हैं, लेकिन मैं नहीं दिख रहा है यह अतिरिक्त मेटाडेटा जो @QueryParam() है है:

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

:

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

अगर मैं एनोटेशन के दोनों का उपयोग करें, मैं कोई त्रुटि मिलती है मेरे विरोधी docblock:

/** 
* 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 
*/ 

पी एस मैं पथ (/user/123), क्वेरी में नहीं में एक आईडी की आवश्यकता है, और मैं भीउपयोग करने की आवश्यकताके रूप में यह NelmioApiDocBundle द्वारा पढ़ा जाता है। मैं इस मुद्दे को कैसे हल कर सकता हूं?

उत्तर

16

FOSRestBundle के @Get एनोटेशन फैली FOSRestBundle के @Route जो बारी में SensioFrameworkExtraBundle के @Route फैली हुई है।

code पर एक नज़र डालें और दस्तावेज अध्याय @Route and @Method देखें।

requirements और defaults विशेषताएँ एक सरणी की अपेक्षा करती हैं।

/** 
    * @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 अपनी व्याख्या यह करते हैं, धन्यवाद! केवल एक चीज अच्छी नहीं लगती है कि सिंगल पैरामीटर को दो बार वर्णित किया गया है, '@ गेट' और '@ एपीडोक' में। –

+0

यदि आप '@ एपीडोक' सेक्शन में 'पैरामीटर' सेक्शन ड्रॉप करते हैं और नीचे दिए गए आईडी को '@param integer $ id' आईडी का विवरण 'दिखाते हैं जो चाल चल रहा है – lopsided

1

आप आवश्यकताओं के लिए एक विवरण चाहते हैं, बस आपकी मदद के लिए

/** 
    * @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"} 
    * } 
    *) 
    */ 
संबंधित मुद्दे