我有一个名为“Item”的资源,其中包含以下字段:
我希望用户能够通过指定id或名称从数据库中获取项目。 例如,如果我在数据库中有这个条目:(1,House,这是一个House),对应于(id,name,description),那么如果用户发送一个Get请求指定
或
这应该返回条目:(1,表,这是一个表)。 问题是,我可以在restlet中这样做吗? 我可以将路由器路由/ Item / {itemId}和/ Item / {itemName}路由到同一个ItemResource类吗?在这种情况下,我应该有两个getrepresentation函数的实现吗?
答案 0 :(得分:0)
您可以将/ Item / {itemId}和/ Item / {itemName}路由到同一个资源类,但是正如评论者写的那样(差不多一年前!),如果id和name命名空间,则存在歧义的风险不是不相交的。更好的设计是拥有两个资源:
/Item?name=MyName
/Item/1234
其中第一个是搜索资源,它返回名为MyName的所有项目。第二个只是查找唯一的项目1234。
您可以使用一个资源类来实现它,但它看起来像两个独立的资源类(可能有一个共同的抽象超类)。