繁体   English   中英

REST API-GetUserByEmail获取路线的最佳方法

[英]REST API - GetUserByEmail best approach for get route

我正在尝试对我的api路由遵循一种模式。

这些都是GET请求

/users                         -- get all users
/users/{userId}                -- get user by id
/users/email/{email}           -- get user by email

OBV。 第三个是一个问题,因为路由的最后一部分将带有/user@domain.com之类的内容,因此该路由未处理,因为它认为我正在尝试转到其他域(例如: http://localhost/users/email/me@microsoft.com

我知道我可以使用POST进行这项工作,也可以使用/ users / {email} / gedderdone之类的其他组合进行这项工作

...但是我正在尝试遵循一种适用于所有资源的模式。

即:

/people/{id}
/people/name/{name}
/people/ssn/{ssn}

我应该如何格式化REST端点以通过用户的电子邮件地址获取用户? 我确实要在“获取”用户时使用GET。

谢谢 :-)

C#-HTMLEncode或Javascript转义您的参数。 那应该有帮助。

不要害怕在您的请求中使用参数

例如

/users
/users/{userid}
/users/email?address=me@microsoft.com

我个人倾向于将用户视为“纯”资源,并通过参数区分获取用户的方式(除了不变,通过/users/1等获得唯一ID之外):

/users/?by=email&value=me@microsoft.com
/users/?by=ssn&value=123345
/users/?by=shoesize&value=10

REST中没有任何内容表明您必须仅通过路由值来标识资源; 如果您坚持使用纯路径值模式,并且发现需要通过多个字段来检索用户,则最终将不得不编写疯狂的路径,例如users/department/development/project/14567/location/dublin ,这听起来很酷,直到有人想要按位置,按项目,然后按部门等进行调用。

根据RFC3986, “ @”符号是保留符号。 因此,您必须将其百分比编码传递为%40-其他任何无效的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM