Пользователи вашего API должны правильно кодировать URI своих параметров.
+
является зарезервированным символом URI и имеет особое значение - это способ кодирования пробела. Если пользователи хотят отправить литерал +
, они должны кодировать его как URI %2B
. @
также зарезервировано и должно быть закодировано как %40
, хотя оно может проскальзывать.
Они должны отправить вам /store?email=google%2B%40gmail.com
. Rails расшифрует его для вас, и params[:email]
будет google+@gmail.com
.
Если вы попытаетесь «исправить» их ошибку, ваше приложение будет работать неправильно, и это вызовет больше проблем.
И поскольку URL-адрес предоставляется внешним источником, я не могу попросить их явно кодировать + как% 2B.
Вы не спрашиваете их, они уже должны знать, как работает стандарт. У кого-то есть неряшливый конец.
Предоставьте им полезное сообщение об ошибке, и они его выяснят.
email `google @gmail.com` is not valid