POST-параметры
Когда мы создаем сервер у нас создаются два потока, так называемые Stream. Request или req является Readable Stream. Когда нам приходит часть данных, у Readable Stream срабатывает событие data. Когда все части данных присланы происходит событие end
var http = require('http');
var fs = require('fs');
var qs = require('querystring');
http.createServer(function (req, res) {
if (req.method == 'POST') {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function () {
var obj = qs.parse(body)
console.log(obj.test);
});
} else {
fs.readFile('form.html', function (err, data){
if (err) {
res.end("File wasn't found");
}
res.writeHeader(200, {"Content-Type": "text/html"});
res.end(data);
});
}
}
).listen(8080);
файл form.html
<form action="/" method="POST">
<input type="text" name="test">
<input type="submit" value="Отправить">
</form>
Иногда нам нужно избавиться от POST-параметров, чтобы при обновлении страницы пользователю не выводилось сообщение.
response.writeHead(302, {
'Location': 'your/404/path.html'
//add other headers here...
});
response.end();
Перенаправление на стороне сервера
Чтобы избавиться от POST-параметров делаем перенаправление на стороне сервера
res.writeHead(302, {'Location': '/ok'});
res.end();
Установка кодировки
res.writeHeader(200, {"Content-Type": "text/html"});
Построение echo-сервера на NodeJS
https://debugmode.net/2014/01/14/create-echo-server-in-node-js/
Дополнительные материалы:
Как извлечь POST-данные в NodeJS http://stackoverflow.com/questions/4295782/how-do-you-extract-post-data-in-node-js
https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/
http://ru.code-maven.com/http-client-request-in-nodejs
Запрос к удаленному серверу
https://docs.nodejitsu.com/articles/HTTP/clients/how-to-create-a-HTTP-request/
Практика:
Есть форма для ввода логина, пароля. Если и логин и пароль совпали - вывести пользователю поздравление. Если нет, выводим сообщение о просьбе ввести данные повторно и форму для ввода.
Пользователь вводит число в форму. В ответ ему опять выводится форма. Так происходит до тех пор, пока пользователь не введет 0. После этого выводим сумму всех введенных чисел.