const http = require("http"); const fs = require("fs"); const path = require("path"); const form = fs.readFileSync(path.join(__dirname, "public", "form.html")); http .createServer((req, res) => { if (req.method === "GET") { get(res); return; } if (req.method === "POST") { post(req, res); return; } error(405, res); }) .listen(3000); function get(res) { res.writeHead(200, { "Content-Type": "text/html", }); res.end(form); } function post(req, res) { if (req.headers["content-type"] !== "application/json") { error(415, res); return; } let input = ""; req.on("data", (chunk) => { input += chunk.toString(); }); req.on("end", () => { const parsed = JSON.parse(input); if (parsed.err) { error(400, "Bad Request", res); return; } console.log("Received data: ", parsed); res.end('{"data": ' + input + "}"); }); } function error(code, res) { res.statusCode = code; res.end(http.STATUS_CODES[code]); }