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

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

+
+ 名前 + 焼き肉 + 湯豆腐 + +
+ + \ No newline at end of file diff --git a/index.js b/index.js index efc57ce..f3fcbd2 100644 --- a/index.js +++ b/index.js @@ -1,32 +1,41 @@ '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}`); 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}\n`); + const rs = fs.createReadStream('./form.html'); + rs.pipe(res); break; case 'POST': - res.write(`POST ${req.url}\n`); let rawData = ''; req .on('data', chunk => { rawData += chunk; }) .on('end', () => { - console.info(`[${now}] Data posted: ${rawData}`); +// const decoded = decodeURIComponent(rawData); +// console.info(`[${now}] 投稿: ${decoded}`); + 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; } - res.end(); }) .on('error', e => { console.error(`[${new Date()}] Server Error`, e); diff --git a/package.json b/package.json index 661f61f..39f60b9 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "author": "", - "license": "ISC" + "author": "PatrickHarumi ", + "license": "ISC", + "repository": "git@github.com:PatrickHarumi/node-js-http-3014.git" }