【问题标题】:Node.js / Express Passing Data Between Pages Without Messing Up RESTful RoutingNode.js / 在页面之间快速传递数据而不会弄乱 RESTful 路由
【发布时间】:2023-04-08 04:05:02
【问题描述】:

我有一个 Express 应用程序,登录页面会邀请人们输入他们的电子邮件地址,然后点击“注册”或“登录”,具体取决于他们是否有帐户。

然后通过 POST 请求将用户带到“/signup”或“/login”,以便可以传递他们输入的电子邮件地址。

但是现在我已经为这两个路由使用了 POST,我必须 POST 到另一个 URL 来处理他们的注册数据或登录凭据,例如 app.POST("/register") 和 app.POST( “/进入”)。这感觉很草率,而且肯定会与我想坚持的 RESTful 路由相混淆。

我知道我可以通过 GET 请求通过 URL 传递数据,但我也不太喜欢这种解决方案。

在这种情况下,最好的方法是什么?我应该只使用 GET 请求并停止如此挑剔吗?还是有其他我还没有想到的方法?

感谢善良的人们!

【问题讨论】:

    标签: node.js express url-routing restful-architecture restful-url


    【解决方案1】:

    我明白为什么您会觉得这与 RESTful 方法相混淆,另一种方法是将电子邮件地址存储在客户端,而不是将其发布到服务器 - 直到他们真正注册为止。

    您可以使用LocalStorage Web API 将电子邮件地址存储在客户端浏览器中,然后在用户点击/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 是一种永久存储解决方案。

    【讨论】:

    • eHigh 五哥们!这非常有用。
    【解决方案2】:

    您可以使用 /signup 和 /login GET 请求来呈现 UI。以及 /signup 和 /login POST 请求进行处理

    【讨论】:

    • 谢谢@user29 - 有没有办法使用 GET 请求并将电子邮件地址排除在 URL 之外?
    • 不,对于 GET 请求,您必须通过 URL 传递电子邮件
    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    相关资源
    最近更新 更多