I'm trying to implement a simple HTTP endpoint for an application written in node.js. I've created the HTTP server, but now I'm stuck on reading the request content body:
http.createServer(function(r, s) { console.log(r.method, r.url, r.headers); console.log(r.read()); s.write("OK"); s.end(); }).listen(42646);
Request's method, URL and headers are printed correctly, but r.read()
is always NULL. I can say it's not a problem in how the request is made, because content-length
header is greater than zero on server side.
Documentation says r
is a http.IncomingMessage
object that implements the Readable Stream interface, so why it's not working?
The http. createServer() method turns your computer into an HTTP server. The http. createServer() method creates an HTTP Server object. The HTTP Server object can listen to ports on your computer and execute a function, a requestListener, each time a request is made.
'readable' event is wrong, it incorrectly adds an extra null character to the end of the body string
Processing the stream with chunks using 'data' event:
http.createServer((r, s) => { console.log(r.method, r.url, r.headers); let body = ''; r.on('data', (chunk) => { body += chunk; }); r.on('end', () => { console.log(body); s.write('OK'); s.end(); }); }).listen(42646);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With