POSTなどを受け取る
またまたhttpサーバを。こんどはGET, HEAD, OPTIONS, POSTなどに対応したり。
#!/usr/bin/env node var http = require('http'), dataSection = require('data-section'); dataSection.get(function(err, data) { var server = http.createServer(); if (err) { throw err; } server.on('request', function(req, res) { var postData; if (req.method === 'GET' || req.method === 'HEAD') { res.writeHead(200, { 'content-length': Buffer.byteLength(data.get, 'utf8'), 'content-type': 'text/html; charset=utf-8' }); if (req.method === 'HEAD') { res.end(); } else { res.end(data.get); } return; } if (req.method === 'POST') { postData = ''; req.setEncoding('utf8'); req.on('data', function(data) { postData += data; }); req.on('end', function() { var responseData = data.post.replace('%s', postData); res.writeHead(200, { 'content-length': Buffer.byteLength(responseData, 'utf8'), 'content-type': 'text/html; charset=utf-8' }); res.end(responseData); }); return; } if (req.method === 'OPTIONS') { res.writeHead(200, { 'allow': 'GET, HEAD, OPTIONS, POST', 'content-length': 0 }); res.end(); } res.writeHead(501, { 'content-type': 'text/html; charset=utf-8' }); res.end(data.other); }); server.listen(process.env.PORT || 3000); }); /*__DATA__ @@ get <!DOCTYPE html> <meta charset="utf-8"> <title>get page</title> <form action="/" method="POST"> <label>text: <input type="text" name="text"></label> <input type="submit" value="送信"> </form> @@ post <!DOCTYPE html> <meta charset="utf-8"> <title>post page</title> <style>span {font-weight: bold}</style> <p><span>%s</span>が入力されました。</p> @@ other <!DOCTYPE html> <meta charset="utf-8"> <title>501 Not Implemented</title> <p>501 Not Implemented</p> __DATA__*/
さすがにマンネリ?