2010-07-10 7 views
0

J'utilise Restlet pour créer une plate-forme RESTful. Je ne l'ai pas encore utilisé, mais j'ai décidé d'utiliser le 2.0 car il est préférable de commencer avec la toute dernière technologie, n'est-ce pas? La principale chose que je cherche est la possibilité d'avoir quelqu'un à mettre dans une URL comme http://mysite/New%20York/3 et le service répondre avec quelque chose comme [New York,New York,New York], donc j'ai besoin de transmettre des attributs de demande. L'utilisation de ce poste pour Restlet 1.1 (parce que je ne peux pas sembler trouver documentation pour cela sur le site Restlet), je câblé ma demande comme ceci:Obtenir des attributs de requête dans Restlet 2.0

router.attach("{text}/{count}", RepeaterResource.class); 

La nouvelle façon de faire est apparemment la méthode UniformResource#doInit(), donc le mien ressemble (sans vérification d'erreur):

@Override 
public void doInit() 
{ 
    magicText = "" + getRequestAttributes().get("text"); 
    repeatAmount = Integer.parseInt("" + getRequestAttributes().get("count")); 
} 

le problème est que le Map<String, Object> retourné de getRequestAttributes() est toujours complètement vide! Cela semble plutôt étrange. Suis-je mal le routage mal? Bien sûr, je pourrais simplement utiliser getQuery() et analyser moi-même, mais c'est certainement la mauvaise façon de procéder et il semble qu'il devrait y avoir un moyen facile de le faire (similaire à la façon dont les versions précédentes fonctionnaient).

+1

* "... parce qu'il est préférable de commencer avec la technologie la plus récente et la meilleure, n'est-ce pas?" - Pas nécessairement. Vous devez déterminer si les avantages de l'utilisation de la nouvelle technologie l'emportent sur les risques et les coûts de votre projet. Et ne négligez pas les problèmes à long terme que vos successeurs auront si la technologie n'est qu'une mode que tout le monde abandonne dans quelques années. –

+0

:-P Je suis d'accord avec vous, bien que cette petite question irritante semble facilement résolu par quelqu'un qui sait ce qu'ils font (ce qui signifie que je n'ai aucune idée). –

+0

Je suis d'accord avec Stephen, mais juste pour concrétiser ceci: Restlet est utilisé dans les systèmes de production depuis des années, est bien entretenu et a une forte communauté. 2.0 est en cours de développement depuis très longtemps, sur une année, et est à ce stade très stable - la version actuelle est RC4, et la version finale sera bientôt disponible. Donc, je pense que c'est un choix sûr - pas aussi sûr que le 1.1, qui est encore plus mature, mais néanmoins sûr. –

Répondre

2

Mon problème, semble-t-il, est que les pièces jointes du routeur doivent commencer par le caractère /. J'attaché comme ceci:

router.attach("/{text}/{count}", RepeaterResource.class); 

Je ne peux pas sembler trouver ce comportement documenté et il semble assez étrange, mais il a certainement fixé mes questions.

+0

Utilisez-vous toujours Restlet? J'ai le même problème mais j'ai dans mon ajout le "/" mais ne fonctionne toujours pas ... – xybrek

+0

Désolé, non - je suis passé à Scala. –

Questions connexes