2017-02-22 39 views
0

关于用于搜索资源的RESTful URL设计,已有couplequestions。我感兴趣的是一个资源ID以外的资源的单一资源的RESTful URL。用于搜索单个资源的RESTful URL设计

例如,用户具有ID和资源URL /rest/user/<id>。我想允许通过他们的电子邮件地址搜索单个用户(确保系统是唯一的)。

替代我来了:

A)/rest/user/email/[email protected] - 在这里email:[email protected]被认为是 - 用于访问单个资源(虽然/rest/user/email将是不确定的)

B)/rest/user/email:[email protected]创建一个单独的资源这是用户的替代标识符,因此这是使用替代ID的相同资源端点。使用替代ID

C)/rest/[email protected] - 这是RESTful搜索,但它会返回含N的阵列零个或一个条目,因此不是直接引用资源

d)/rest/user/[email protected] - 类似的搜索API作为(C),但具有不同的语义

设计应扩展到与搜索系统提供的不同唯一ID(外部ID,电话号码,SSN等)。

我倾向于选项B,因为它定义了引用特定用户(可以在服务中全局使用)的替代方法,并重新使用现有资源端点。这可以扩展到PUT和DELETE以及GET。但它是非常RESTful?

+0

[REST API设计 - 通过REST获取具有不同参数但相同url模式的资源]的可能副本(http://stackoverflow.com/questions/20381976/rest-api-design-getting-a-resource-through -rest与 - 不同参数,但是) – vtortola

回答

0

/rest/user/[email protected],用于表示级别关系的斜杠'/',例如,/rest/customer/orders/order1,客户有订单集合,订单有订单命令order1。