2011-05-15 3 views
0

Existe-t-il un moyen d'ignorer les barres obliques Play! Framework et ? dans certaines parties de l'URL?L'URL de codage est la Play! Cadre

En règle générale, si je donne les résultats suivants:

www.123.com/api/link/http:www.bla.com/?contenId=123&User=test

Il ne fonctionnera pas. Dans ce cas, ce que je voudrais faire est simplement d'avoir le lien dans la dernière partie de l'URL dans une variable String pour l'enregistrer. Je suppose que je peux forcer le client à remplacer le / et ? par quelque chose d'autre, mais je préfère garder les choses simples.

Ma première pensée était que peut-être il y a un moyen de configurer le routage de telle sorte que nous avons quelque chose comme:

/api/link/{data}

data détiendrait ce qui reste de l'URL. Je ne peux pas trouver comment faire ça.

Répondre

6

Vous ne pouvez pas avoir :/? à l'exception de votre URL principale. Vous devez encoder votre paramètre pour l'ajouter à l'URL principale. Voir URLEncoder pour Java.

Ce n'est pas une URL valide:

http://www.123.com/api/link/http://www.bla.com/?contenId=123&User=test 

Il doit être:

http://www.123.com/api/link/http%3a%2f%2fwww.bla.com%2f%3fcontenId%3d123%26User%3dtest 

Ensuite, vous pouvez passer au paramètre {data} et decode dans votre méthode de gestionnaire.

+1

+1, car si le? dans l'URL fait partie du texte, plutôt que de marquer la chaîne de requête, alors il * doit * être échappé. –

Questions connexes