我将以下PUT(X.XXXXX.com/AAAA/BBBBB/CCCC/XXXXXX/employees/admin/uchei.ca@gmail.com)传递给以下请求映射的REST服务:
@RequestMapping(
value = Array("/employees/{organizationIdentifier}/{emailString}"),
method = Array(RequestMethod.PUT)
)
不幸的是,我收到405错误。我试过了
/{emailString:.*}
/{emailString:.+}
/{emailString}/
/{emailString:^[a-zA-Z0-9\.!#$%&'*+/=?^_{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$}
没有运气。请告知如何构建有效的正则表达式或其他一些技巧,以便在没有405的情况下传递上述电子邮件。
答案 0 :(得分:0)
根据单一责任原则,我不希望代理验证电子邮件。
什么是正确的电子邮件。如果您决定随时验证电子邮件,则必须自行回答:什么是有效的电子邮件。是String
匹配某些regex
还是String
匹配某些正则表达式并且具有有效域。或者它可能必须在注册时在您的应用程序中使用,已确认并已存储在数据库中?在我看来,最后一个。
如果我是你,我会做以下事情:
@RequestMapping(
value = Array("/employees/{organizationIdentifier}/{whatever}"),
method = Array(RequestMethod.PUT)
)
我认为,这封电子邮件是数据库中某些表的主键。
现在在service-layer
中,您应该首先使用该电子邮件查询数据库并检查返回的实体是否为空。如果不是,则它是一封有效的电子邮件,已在您的应用程序中以某种方式进行了验证。
您还可以@RequestParam
并请求参数idType
。如果它设置为email
做一件事,否则做其他事情。