diff --git a/form.html b/form.html new file mode 100644 index 0000000..651883d --- /dev/null +++ b/form.html @@ -0,0 +1,16 @@ + + + + + アンケート + + +

どちらが食べたいですか?

+
+ 名前: + 焼き肉 + 湯豆腐 + +
+ + diff --git a/index.js b/index.js index bfd5ba5..f431eab 100644 --- a/index.js +++ b/index.js @@ -1,40 +1,48 @@ -'use strict'; -const http = require('node:http'); +'use strict' +const http = require('node:http') +const fs = require('node:fs') const server = http .createServer((req, res) => { - const now = new Date(); - console.info(`[${now}] Requested by ${req.socket.remoteAddress}`); + const now = new Date() + console.info(`[${now}] Requested by ${req.socket.remoteAddress}`) res.writeHead(200, { - 'Content-Type': 'text/plain; charset=utf-8' - }); + 'Content-Type': 'text/html; charset=utf-8', + }) switch (req.method) { case 'GET': - res.write(`GET ${req.url}`); - break; + const rs = fs.createReadStream('./form.html') + rs.pipe(res) + break case 'POST': - res.write(`POST ${req.url}`); - let rawData = ''; + let rawData = '' req - .on('data', chunk => { - rawData += chunk; + .on('data', (chunk) => { + rawData += chunk }) .on('end', () => { - console.info(`[${now}] Data posted: ${rawData}`); - }); - break; + const answer = new URLSearchParams(rawData) + const body = `${answer.get('name')}さんは${answer.get( + 'yaki-tofu' + )}に投票しました` + console.info(`[${now}] ${body}`) + res.write( + `

${body}

` + ) + res.end() + }) + break default: - break; + break } - res.end(); }) - .on('error', e => { - console.error(`[${new Date()}] Server Error`, e); + .on('error', (e) => { + console.error(`[${new Date()}] Server Error`, e) + }) + .on('clientError', (e) => { + console.error(`[${new Date()}] Client Error`, e) }) - .on('clientError', e => { - console.error(`[${new Date()}] Client Error`, e); - }); -const port = 8000; +const port = 8000 server.listen(port, () => { - console.info(`[${new Date()}] Listening on ${port}`); -}); + console.info(`[${new Date()}] Listening on ${port}`) +})