我有一个将某人的信息存储到数据库中的应用程序,但是当我尝试使用 GET
的 URL 时基于其电子邮件地址的用户 +
在他们的电子邮件中找不到。
返回人员的 URL 示例:
https://www.someURL.com/api/people/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4d272225233e202439250d3e22202828202c2421632e2220" rel="noreferrer noopener nofollow">[email protected]</a>
不返回人员的示例 URL(返回 null):
https://www.someURL.com/api/people/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="402a212e256b242f2500332f2d25252d21292c6e232f2d" rel="noreferrer noopener nofollow">[email protected]</a>
两封电子邮件都在数据库中,如 URL 中所写,因此这似乎不是拼写错误问题,我正在使用 postman 来测试 GET
方法。为什么我找不到它们,我该如何才能找到它们,即使使用 +
性格?
当我使用 id 搜索时,我能够找到该人,因此我知道该人存在。
最佳答案
我的建议是:将服务器实现从 GET 更改为 POST,并在请求正文中提供电子邮件作为字符串参数。它将防止出现此问题以及任何因转义 URI 中的特殊字符而出现的类似问题。
如果不可能,请尝试使用单个 ' 或双 " 引号来构建电子邮件地址,具体取决于您的网络服务器如何处理传入请求,这可能也会有所帮助.
很高兴知道“+”对于许多电子邮件提供商来说并不是真正的“有效”字符,这是有原因的。例如,Gmail 不允许您创建除 [A-z0-9](字母数字)和点 (.) 字符之外的任何字符的电子邮件地址。我很确定他们厌倦了使用复杂的正则表达式来验证输入电子邮件,而只是将其限制为基本的电子邮件。
关于grails - 查找带有 "+"的电子邮件时,通过电子邮件获取失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592530/