RESTAPI URL按变量命名

RESTAPI URL按变量命名,rest,flask,Rest,Flask,我想让人们通过不同的变量检索资源。例如,我想让他们通过电子邮件或ID搜索用户 目前我正在使用: https://my-api.com/get-user-by-email?email=xxx@yyy.com 及 这是一种好的做法吗?如果答案是否定的,我应该如何重命名此URL并提供验证,以便它只接受电子邮件和ID 以这种方式命名资源不是一个好的做法。基本上,您可以将用户作为资源集合,通过电子邮件进行过滤,并通过唯一标识符(id)检索单个资源,所以url模式如下 通过电子邮件搜索 https://m

我想让人们通过不同的变量检索资源。例如,我想让他们通过电子邮件或ID搜索用户

目前我正在使用:

https://my-api.com/get-user-by-email?email=xxx@yyy.com


这是一种好的做法吗?如果答案是否定的,我应该如何重命名此URL并提供验证,以便它只接受电子邮件和ID

以这种方式命名资源不是一个好的做法。基本上,您可以将
用户
作为资源集合,通过电子邮件进行过滤,并通过唯一标识符(
id
)检索单个资源,所以url模式如下

通过电子邮件搜索

https://myco.api/users?email=xx@yy.com
按ID检索

https://myco.api/users/{id}

至于验证,这是一个实现问题,不是一个接口问题,应该提供一些见解

感谢您的回答。如果电子邮件和ID都是唯一的呢?使用
https://myco.api/users?email=xx@yy.com
https://myco.api/users?id=xxx
?虽然这两个实体属性在集合上可能是唯一的,通过rdbms进行约束,但从REST资源的角度来看,应该有单个id和可搜索属性,所以我建议按照原始答案的建议去做。还有
https://myco.api/users/{id}