问题我正在解决:
编写一个仅接收发布请求的HTTP服务器,并将传入的帖子字符转换为上案例并将其返回给客户端。
您的服务器应在您程序的第一个参数提供的端口上收听。
我的解决方案
var http = require('http');
var map = require('through2-map')
http.createServer(function(request,response){
if (request.method == 'POST'){
request.pipe(map(function (chunk) {
return chunk.toString().toUpperCase();
})).pipe(response);
}
}).listen(process.argv[2]);
我可以实现不使用2-MAP吗?
我的残酷解决方案不起作用:
request.on('data',function(data){
body += data.toString();
console.log(body);
});
request.pipe(body.toUpperCase()).pipe(response);
我可以做真正的困难方法吗?
在第二个片段中,body.toUpperCase()
将在任何'data'
事件实际发生之前立即起作用。.on()
的调用仅添加事件处理程序,因此将被调用,但尚未称呼它。
您可以将'end'
事件与'data'
一起使用,以等待收到所有data
块,准备好被提出:
request.on('data', function (data) {
body += data.toString();
});
request.on('end', function () {
response.end(body.toUpperCase());
});
注意:确保正在声明body
并分配一个初始值:
var body = '';
response.on('data', ...);
// ...