Node.js API/服务器post请求

Node.js API/服务器post请求,node.js,api,post,server,Node.js,Api,Post,Server,我在几天前开始了Node.js和general web,现在我有一个项目,我必须开发一个web服务器,在Express上运行nodejs中的API,我想正确地完成它,但我不确定是否有好的方法来完成它 它涉及我发送到API的每个post请求,下面是一个示例: 注册: 我有一个路由app.get('/signup'),我正在向我的API发送一个post请求以创建新用户。因此,根据我的猜测,我发送了一个带有action=/signupmethod=“post”的表单,这意味着我的服务器上有app.po

我在几天前开始了Node.js和general web,现在我有一个项目,我必须开发一个web服务器,在Express上运行nodejs中的API,我想正确地完成它,但我不确定是否有好的方法来完成它

它涉及我发送到API的每个post请求,下面是一个示例:

注册:

我有一个路由
app.get('/signup')
,我正在向我的API发送一个post请求以创建新用户。因此,根据我的猜测,我发送了一个带有
action=/signup
method=“post”
的表单,这意味着我的服务器上有app.post(“/signup”)。在本文中,我使用表单中的所有信息创建了一个post请求,并将其发送到创建用户的API,然后将答案发送回
app.post('/signup')
。基本上,这里是模式:

Get('/signup') -> Post('/signup') -> API('createUser') -> Post('signup')
然后我想回到我的app.get('/signup'),因为我不想在post-one中发送html表单,并说“Hey it's ok”,而不是显示表单,所以我正在进行重定向,但我怎么知道在
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');
                 });
});
app.get('/signup',函数(req,res){
res.setHeader('Content-Type','text/html');
if(req.session.userId){res.end(“连接为”+req.session.name);}
否则{
res.end(“作为客人,您正在注册:

”+ '名字:
'+ '姓:
'+ '电子邮件:
'+ '密码:
'+ '角色:
'+ '' + ''); } }); 应用程序发布('/signup',功能(请求、回复){ 请寄({ 网址:'http://localhost:4242/signup', 表格:{ firstname:req.body.firstname, lastname:req.body.lastname, 电子邮件:req.body.email, 角色:req.body.role, 密码:req.body.password }}, 功能(错误、响应、正文){ res.redirect('/signup'); }); });
这是做这件事的好方法吗?
除了会话变量外,还有其他方法从post发送变量以获取吗?(通过重定向)?

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

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

$('#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('/signup')请求,完成API调用后,返回一条状态消息:

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

然后,您可以使用此JSON响应采取适当的操作。

我就是不理解您的问题。请说得更清楚些。我们这里也使用了几乎完全相同的方法,它对于处理服务器响应非常有用。我更新了我的帖子,向您展示了我所做的,我想知道这是否是处理API响应的好方法。您试图通过重定向发送什么?您可以将其添加为参数值:
res.redirect('/signup?variable=string')req.query.variable
访问
app.get('/signup')
函数中的变量。这样做是否正确?这取决于您发送的数据。如果它是敏感的,那么不要使用查询方法。如果敏感,请坚持使用req.session变量。