2014-11-04 2 views
0

Я начал Node.js и общую сеть несколько раз назад, и теперь у меня есть проект, где мне нужно разработать веб-сервер с API в nodejs, работающем на Express, и я хочу это сделать правильно, но я не уверен, есть ли хороший способ сделать это.Node.js Запрос на отправку API/сервера

Речь идет о каждом посте просьбы я направляю к моему 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 («/ регистрации»), потому что я не хочу, чтобы отправить 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'); 
       }); 
}); 

Это хороший способ сделать это? Есть ли другой способ отправить переменную из сообщения, чтобы получить за исключением переменной сеанса? (с перенаправлением)?

+0

Я просто не могу понять ваш вопрос. Пожалуйста, сделайте это более четко. – petwho

ответ

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 ('/ SIGNUP') запрос, и как только вы закончите с API вызовов, возвращает сообщение о состоянии:

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

Затем вы можете использовать этот ответ JSON для принятия соответствующих мер.

+0

Здесь мы используем почти этот точный метод, он отлично подходит для обработки ответа сервера. – user1138966

+0

Я обновляю свой пост, чтобы показать вам, что я сделал, я хотел бы знать, является ли это хорошим способом обработки ответа API. – Xtroyer

+0

Что вы пытаетесь отправить с помощью перенаправления? Вы можете добавить его как значение параметра: 'res.redirect ('/ signup? Variable = string');' и затем получить доступ к переменной в вашей функции 'app.get ('/ signup')', используя 'req.query .variable'. –