通过不同字段获取资源的RESTful URL

Eri*_*rix 5 rest

简单的问题我无法找到答案..

如果我有一个REST Web服务,并且我的设计没有使用url参数,我如何指定两个不同的键来返回相同的资源?

我希望的例子(并且已经实施)

/Person/{ID}
Run Code Online (Sandbox Code Playgroud)

它按预期返回一个人.

现在我也想要

/Person/{Name}
Run Code Online (Sandbox Code Playgroud)

它按名称返回一个人.

这是正确的RESTful格式吗?或者它是这样的:

/Person/Name/{Name}
Run Code Online (Sandbox Code Playgroud)

Bri*_*lly 7

您应该只使用一个URI来引用单个资源.拥有多个URI只会造成混淆.在您的示例中,由于两个人具有相同的名称而引起混淆.那么他们指的是哪个人力资源?

也就是说,您可以将多个URI引用到单个资源,但对于除"真实"URI之外的任何其他内容,您只需使用状态代码将客户端重定向到正确的位置即可301 - Moved Permanently.

就个人而言,我永远不会实现多ID方案或重定向来支持它.选择一个识别方案并坚持下去.您的API用户会感谢您.

您真正需要构建的是查询API,因此请关注如何实现类似/personFinder资源的方式,该资源可以将名称作为参数并/person/{ID}在响应中返回可能多个匹配的URI.