我有一个Node Express网络应用程序,我需要在其上实现此流程:
/product/:productId/buy
:用户提交一份表单,其中包含我提交给API图层的姓名,地址和电话号码- 进行回复
API针对
201
的{{1}}以及All good
的{{1}}
202
:如果Order submitted, but we need to verify your mobile number first
,请向用户显示确认屏幕
/product/:productId/confirm
:如果201
,请将用户带到手机验证屏幕,其中显示:/verify/phone
- 醇>
202
:用户输入OTP。点击API,验证并将它们带到确认屏幕。否则重装 的Verify your phone number: <insert phone number entered at step#1> with the OTP sent to your phone
我已设置以下路线:
/product/:productId/confirm
当我/verify/phone
{
method: 'GET',
path: '/product/: productId/buy',
action: ['productController', 'getBuyForm']
},
{
method: 'POST',
path: '/product/: productId/buy',
action: ['productController', 'postBuyForm']
},
{
method: 'GET',
path: '/verify/phone',
action: ['verificationController', 'getVerificationForm']
},
{
method: 'POST',
path: '/verify/phone',
action: ['verificationController', 'postVerificationForm']
}
时,我在请求正文中提交POST
,postBuyForm
和phone
。
服务器以空体和状态代码响应。
现在,如果状态代码为address
,我需要导航到name
页面,但我还需要以某种方式结转我使用{{{0}}提交的202
值1}}因为我需要在页面上显示它。
执行此操作的一个选项是使用:
verify/phone
但我的公司并不希望电话号码成为查询字符串的一部分,因为这会导致滥用。
另一个选择是使用@circusbred下面提到的会话:
phone
但我们尝试不按设计使用会话,我们只对经过身份验证的用户使用会话,此功能也适用于未经过身份验证的用户。
我的问题是:
有没有办法导航或重定向到验证页面,同时传递postBuyForm
值而不必将其包含在查询字符串中?
答案 0 :(得分:1)
唯一可行的选择是使用某种sessions。
app.post('/product/: productId/buy', (req, res) => {
req.session.phone = phone;
});
app.get('/verify/phone', (req, res) => {
console.log(req.session.phone);
});