Restlet:我可以将两个Get函数路由到同一个Resource类吗?

时间:2011-06-25 18:46:33

标签: resources get restlet

我有一个名为“Item”的资源,其中包含以下字段:

  • 编号
  • 名称
  • 描述

我希望用户能够通过指定id或名称从数据库中获取项目。 例如,如果我在数据库中有这个条目:(1,House,这是一个House),对应于(id,name,description),那么如果用户发送一个Get请求指定

  • id = 1

  • 名= “表”

这应该返回条目:(1,表,这是一个表)。 问题是,我可以在restlet中这样做吗? 我可以将路由器路由/ Item / {itemId}和/ Item / {itemName}路由到同一个ItemResource类吗?在这种情况下,我应该有两个getrepresentation函数的实现吗?

1 个答案:

答案 0 :(得分:0)

您可以将/ Item / {itemId}和/ Item / {itemName}路由到同一个资源类,但是正如评论者写的那样(差不多一年前!),如果id和name命名空间,则存在歧义的风险不是不相交的。更好的设计是拥有两个资源:

/Item?name=MyName
/Item/1234

其中第一个是搜索资源,它返回名为MyName的所有项目。第二个只是查找唯一的项目1234。

您可以使用一个资源类来实现它,但它看起来像两个独立的资源类(可能有一个共同的抽象超类)。