Le mélange d'itinéraire et des paramètres de requête à l'aide de FOSRestBundle avec Symfony
En utilisant Symfony2 et FOSRestBundle je tente de mettre en œuvre des méthodes de l'API qui ont un certain nombre de paramètres fixes définies dans l'itinéraire, ainsi que certains paramètres facultatifs qui peuvent exister dans la chaîne de requête.
Par exemple:
http://somesite.com/api/method/a/b
http://somesite.com/api/method/c/d?x=1&y=2
Selon la documentation pour FOSRestBundle, ParamFetcher est la bonne façon de le faire, à l'aide de @QueryParam annotation. Cependant, j'ai déjà un contrôleur défini comme:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\RestBundle\Controller\Annotations\Get;
use FOS\RestBundle\Controller\Annotations\View;
class MyController extends Controller
{
/**
* @Get("/method/{a}/{b}")
* @View()
*/
public function getMethodAction($a, $b)
{
//do stuff
return array('foo' => 'bar');
}
}
Maintenant, il semble que j'ai besoin d'être en mesure d'obtenir l'accès à une instance de ParamFetcher, mais je ne sais pas comment (et les recherches Google n'ont pas beaucoup aidé). Je sais à partir de la documentation que je peut simplement changer la signature de la méthode pour intégrer ParamFetcher, cependant, lorsque je fais cela, il déplace les paramètres dans la chaîne de requête, que je ne peux pas avoir.
Est-il un moyen de mélanger les deux, ou devrais-je renoncer à ParamFetcher et allez à l'inspection de la demande directement à l'aide de Symfomy intégré dans l'objet de Requête?
OriginalL'auteur futureal | 2012-12-08
Vous devez vous connecter pour publier un commentaire.
Cette question est assez vieux et vous avez probablement trouvé une solution déjà, mais depuis que je suis ici grâce à la recherche Google et de savoir la réponse, je vais contribuer.
OriginalL'auteur Konrad Podgórski
Voulais juste poster une réponse parce que l'original de la réplique utilise uniquement QueryParams, et la question a été à l'aide de QueryParams avec RouteParams.
Si vous souhaitez utiliser le paramètre de route et de requête de paramètres, vous pouvez utiliser le ParamFetcher comme premier argument à l'action et à ajouter la route des arguments plus tard.
Je n'ai pas encore trouvé un moyen d'ajouter le paramètre de route pour la paramFetcher.
OriginalL'auteur Paul Weber