Node.js / Экспресс-передача данных между страницами без нарушения маршрутизации RESTful

У меня есть приложение Express, где на целевой странице людям предлагается ввести свой адрес электронной почты, а затем нажать «Зарегистрироваться» или «Войти», в зависимости от того, есть ли у них учетная запись или нет.

Затем пользователь попадает в «/signup» или «/login» с помощью POST-запроса, чтобы можно было передать введенный им адрес электронной почты.

Но теперь, когда я использовал POST для обоих этих маршрутов, мне нужно отправить POST на другой URL-адрес, чтобы обработать их регистрационные данные или учетные данные для входа, например app.POST("/register") и app.POST("/enter"). "). Это выглядит довольно небрежно и определенно мешает маршрутизации RESTful, которой я хотел бы придерживаться.

Я знаю, что могу передать данные через URL-адрес с помощью запроса GET, но мне это решение тоже не очень нравится.

Как лучше поступить в этой ситуации? Должен ли я просто использовать запросы GET и перестать быть таким суетливым? Или есть другой способ, о котором я еще не подумал?

Спасибо добрые люди!


person Runny Yolk    schedule 26.09.2016    source источник


Ответы (2)


Я понимаю, почему вы чувствуете, что это мешает подходу RESTful, и альтернативным методом было бы хранить адрес электронной почты на стороне клиента, а не отправлять его на сервер - до тех пор, пока они действительно не зарегистрируются.

Вы можете использовать веб-API LocalStorage для хранения адреса электронной почты в клиентский браузер, а затем загружать его, когда пользователь переходит по маршруту /signup.

let email = document.querySelector('input[name="email"]').value
localStorage.set('email', email)

затем позже, когда пользователь попадет на маршрут /signup, вы должны сделать:

let email = localStorage.get('email')
document.querySelector('input[name="email"]').value = email

Это должно быть в теге <script> для двух маршрутов.

Вы также можете использовать sessionStorage, который очищается, когда пользователь закрывает свой браузер, в то время как localStorage является решением для постоянного хранения.

person Tom    schedule 26.09.2016
comment
eДай пять, чувак! Это мега полезно. - person Runny Yolk; 26.09.2016

Вы можете использовать GET-запрос /signup и /login для рендеринга пользовательского интерфейса. И POST-запросы /signup и /login для обработки

person Bhavana    schedule 26.09.2016
comment
Спасибо @ user29 - есть ли способ использовать запросы GET и не указывать адрес электронной почты в URL-адресе? - person Runny Yolk; 26.09.2016
comment
Нет, для запроса GET вы должны передать электронную почту через URL - person Bhavana; 26.09.2016