基于 GET、POST的 todoList

一个简单的TodoList

基于 GET、POST的 todoList_第1张图片
image.png
  • 在将待办事项添加到数组中之前,你需要得到完整的字符串。要得到整个字符串,可以将所有数据块拼接到一起,直到表明请求已经完成的end事件被发射出来。在end事件出来后,可以用请求体的整块内容组装出item字符串,然后压入items数组中。在添加好事项后,你可以用字符串OK和Node的默认状态码200结束响应

执行文件index.js

'use strict';
let http = require('http');
let todo = require('./todoModule');
// 用一个常规的JavaScript数组存放数据
let items = [];
let server=http.createServer((req,res)=>{
    if('/'==req.url){
        console.log(req.method);
        switch(req.method){
            case 'GET':
                todo.show(res,items);
                break;
            case 'POST':
                todo.add(req, res,items);
                break;
            default:
                todo.badRequest(res);
        }
    }
    else{
        todo.notFound(res);
    }
})
server.listen(32001);

依赖模块 todoMoudle.js

'use strict';

let qs = require('querystring');

function show(res, items) {
    console.log(items);

    let html = `
        
            
                
                    TodoList
                
            
        
            

Todo List

    ${items.map(item => `
  • ${item}
  • ` ).join('')}

` res.setHeader('Content-type', 'text/html'); res.setHeader('Content-Length', Buffer.byteLength(html)); res.end(html); }; function add(req, res, items) { //为进来的事项设置字符串缓存 let body = ''; req.setEncoding('utf8'); req.on('data', (chunk) => { body += chunk; }) req.on('end', () => { let obj = qs.parse(body); items.push(obj.item); show(res, items); }) } //notFound()函数接收响应对象,将状态码设为404,响应主体设为Not Found: function notFound(res) { res.statusCode = 404; res.setHeader('Content-type', 'text/plain'); res.end('Not Found'); }; //返回400 Bad Request响应的函数实现起来跟notFound()几乎一样,向客户端指明该请求无效: function badrequest(res) { res.statusCode = 400; res.setHeader('Content-type', 'text/plain'); res.end('badrequest'); }; module.exports = {show, add, notFound, badrequest}

你可能感兴趣的:(基于 GET、POST的 todoList)