关于用于搜索资源的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?
[REST API设计 - 通过REST获取具有不同参数但相同url模式的资源]的可能副本(http://stackoverflow.com/questions/20381976/rest-api-design-getting-a-resource-through -rest与 - 不同参数,但是) – vtortola