【发布时间】:2014-11-04 19:16:57
【问题描述】:
我几次前启动了 Node.js 和一般 web,现在我有一个项目,我必须在 Express 上运行的 nodejs 中开发一个带有 API 的 web 服务器,我想正确地做,但我不确定是否有一个好方法。
它与我发送到我的 API 的每个帖子请求有关,这是一个示例:
注册:
我有一个路由 app.get('/signup'),我正在向我的 API 发送一个发布请求以创建新用户。所以根据我的猜测,我发送了一个带有action = /signupmethod = "post" 的表单,这意味着在我的服务器上我有 app.post('/signup')。在这篇文章中,我使用表单中的所有信息创建了一个发布请求,并将其发送到创建用户的 API,然后将答案发送回app.post('/signup')。所以基本上,这里的架构:
Get('/signup') -> Post('/signup') -> API('createUser') -> Post('signup')
然后我想回到我的 app.get('/signup'),因为我不想从帖子中发送 html,然后说“嘿,没关系”而不是显示表单,所以我'正在进行重定向,但我怎么知道在 Get('/signup') 中显示什么?我可以发送一个变量来知道要向用户显示什么吗?顺便说一句,这是正确的做法吗?
谢谢!
PS:看起来不是很清楚,所以这里是代码:
app.get('/signup', function(req, res) {
res.setHeader('Content-Type', 'text/html');
if (req.session.userId) { res.end("Connected as " + req.session.name); }
else {
res.end('<html><p>As a guest, you\'re signing up : </p><form action="/signup" method="post">' +
'First name: <input type="text" name="firstname"><br>' +
'Last name: <input type="text" name="lastname"><br>' +
'email: <input type="text" name="email"><br>' +
'password: <input type="text" name="password"><br>' +
'role: <input type="text" name="role"><br>' +
'<input type="submit" value="Submit">' +
'</form></html>');
}
});
app.post('/signup', function(req, res) {
request.post({
url: 'http://localhost:4242/signup',
form : {
firstname : req.body.firstname,
lastname : req.body.lastname,
email : req.body.email,
role : req.body.role,
password : req.body.password
}},
function (error, response, body) {
res.redirect('/signup');
});
});
这是一个好方法吗? 除了会话变量之外,还有其他方法可以从 post 发送变量到 get 吗? (带有重定向)?
【问题讨论】:
-
我无法理解你的问题。请说得更清楚。