在Spring中传递电子邮件@RequestMapping

时间:2016-10-07 01:31:31

标签: spring scala

我将以下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错误。我试过了

  1. /{emailString:.*}
  2. /{emailString:.+}
  3. /{emailString}/
  4. /{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])?)*$}
  5. 没有运气。请告知如何构建有效的正则表达式或其他一些技巧,以便在没有405的情况下传递上述电子邮件。

1 个答案:

答案 0 :(得分:0)

根据单一责任原则,我不希望代理验证电子邮件。

什么是正确的电子邮件。如果您决定随时验证电子邮件,则必须自行回答:什么是有效的电子邮件。是String匹配某些regex还是String匹配某些正则表达式并且具有有效域。或者它可能必须在注册时在您的应用程序中使用,已确认并已存储在数据库中?在我看来,最后一个。

如果我是你,我会做以下事情:

@RequestMapping(
    value = Array("/employees/{organizationIdentifier}/{whatever}"),
    method = Array(RequestMethod.PUT)
)

我认为,这封电子邮件是数据库中某些表的主键。

现在在service-layer中,您应该首先使用该电子邮件查询数据库并检查返回的实体是否为空。如果不是,则它是一封有效的电子邮件,已在您的应用程序中以某种方式进行了验证。

您还可以@RequestParam并请求参数idType。如果它设置为email做一件事,否则做其他事情。