Node.js API /服务器发布请求

时间:2014-11-04 07:48:13

标签: node.js api post server

我几次开始使用Node.js和一般网络,现在我有一个项目,我必须开发一个带有运行在Express上的nodejs中的API的Web服务器,我想要正确地做,但我不确定是否这是一个很好的方法。

它关注我发送给我的API的每个帖子请求,这是一个例子:

注册:

我有一个路由app.get('/signup'),我正在向我的API发送一个帖子请求来创建新用户。所以我猜我会发送一个包含action = /signup method = "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发送变量吗? (使用重定向)?

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解这个问题,但这就是我使用node.js处理表单提交的方式。

使用jQuery / Ajax提交表单,这样我们就可以在POST后从服务器获得响应。

$('#your-form').on('submit', function(e) {

    e.preventDefault();

    var formData = $(this).serializeArray();

    $.ajax({
        type: 'POST',
        url: '/signup',
        data: formData
    }).success(function(response) {

        if (response.success == '1') {
            // Do something
        } else {
            // Do something - e.g. display an error message
        }

    });

});

然后在您的Node.js服务器上,您可以处理app.post(&#39; /注册&#39;)请求,并在完成API调用后,返回状态消息:< / p>

res.json({message: 'User created successfully.', success: '1'});

然后,您可以使用此JSON响应执行相应的操作。