2016-10-07 29 views
0

我將以下PUT(X.XXXXX.com/AAAA/BBBBB/CCCC/XXXXXX/employees/admin/[email protected])傳遞給以下請求的REST服務映射:在Spring中傳遞@RequestMapping郵件

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

不幸的是,我收到了405錯誤。我曾嘗試

  1. /{emailString:.*}
  2. /{emailString:.+}
  3. /{emailString}/
  4. /{emailString:^[a-zA-Z0-9\.!#$%&'*+/=?^_{|}~-][email protected][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

試試這個URL https://www.X.XXXXX.com/AAAA/BBBBB/CCCC/XXXXXX/employees/admin/uchei.ca%40gmail.com – reos

+0

我想在最後解析出電子郵件字符串。我必須對{emailString}進行更改嗎? – XnaijaZ

+0

您無法發送需要對URL進行編碼的「@」,以便任何「奇怪」字符都得到正確編碼。 –

回答

0

根據單責任原則,我不希望代理驗證電子郵件。

什麼是正確的電子郵件。如果您決定隨時驗證電子郵件,則必須回答自己:什麼是有效的電子郵件。它是一個String,它匹配某個regexString,它匹配某個正則表達式並且具有有效的域。或者,它可能已經在註冊時被用於您的應用程序,已經確認並且已經存儲在數據庫中?在我看來是最後一個。

如果我是你,我會做到以下幾點:

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

我認爲,這個電子郵件是在數據庫中的一些表的主鍵。

現在在你的service-layer你應該開始用這個郵件查詢數據庫並檢查返回的實體是否爲null。如果不是,它是一個有效的電子郵件,它已經在您的應用程序中以某種方式驗證過。

您也可以@RequestParam s請求參數idType。如果它設置爲email,則做一件事,否則做其他事。