2010-07-10 40 views
0

我使用Restlet构建了一个RESTful平台。我之前没有用过它,但我决定使用2.0版本,因为它最好以最新最好的技术开始,对吧?在Restlet 2.0中获取请求属性

我在寻找的关键是能够让某人输入一个像http://mysite/New%20York/3这样的URL,并让服务响应类似[New York,New York,New York]的东西,所以我需要传入请求属性。使用这个职位Restlet 1.1(因为我似乎无法找到任何文档这个在现场的Restlet),我有线了我的应用程序,像这样:

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

新的方式做,这显然是在该UniformResource#doInit()方法,所以我的样子(没有错误检查):

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

是,Map<String, Object>getRequestAttributes()返回的问题始终是完全是空的!这似乎很奇怪。我是否将布线布线错误?

当然,我可以使用getQuery()并自己解析它,但这绝对是这样做的错误方式,它似乎应该有一个简单的方法来做到这一点(类似于以前的版本的工作方式)。

+1

*“...因为最好是从最新和最好的技术开始,对吗?” - - 不一定。您需要弄清楚使用新技术的好处是否超过了项目的风险和成本。如果技术只是几年后每个人都放弃的时尚,那么不要忽视你的继任者将会遇到的长期问题。 – 2010-07-10 04:09:50

+0

:-P我同意你的观点,虽然这个令人讨厌的小问题似乎很容易被一个知道他们在做什么的人解决(这意味着我不知道)。 – 2010-07-10 04:14:10

+0

我同意斯蒂芬的观点,但只是为了让这个问题具体化:Restlet已经在生产系统中使用了多年,维护得很好,并且拥有一个强大的社区。 2.0已经开发了很长一段时间,超过一年,而且在这一点上非常稳定 - 目前的版本是RC4,并且最终版本将很快推出。所以我认为这是一个安全的选择 - 并不像1.1那么安全,但它更加成熟,但却很安全。 – 2010-07-11 13:57:28

回答

2

我的问题似乎是,路由器附件必须以/字符开头。我应该附加像这样:

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

我似乎无法找到这种行为记录,它似乎很奇怪,但它肯定会解决我的问题。

+0

你还在使用Restlet吗?我遇到了同样的问题,但我在添加“/”但仍然无法正常工作... – xybrek 2015-01-03 20:38:06

+0

对不起,我已经转移到Scala。 – 2015-01-04 21:20:31