{"id":1258,"date":"2022-02-26T22:07:44","date_gmt":"2022-02-26T13:07:44","guid":{"rendered":"http:\/\/mylittleforest.kr\/wordpress\/?p=1258"},"modified":"2025-01-15T11:32:55","modified_gmt":"2025-01-15T02:32:55","slug":"nodejs-todo-list-%ed%94%84%eb%a1%9c%ea%b7%b8%eb%9e%a8","status":"publish","type":"post","link":"http:\/\/mylittleforest.kr\/wordpress\/blog\/2022\/02\/26\/1258\/","title":{"rendered":"nodeJS Todo list \ud504\ub85c\uadf8\ub7a8"},"content":{"rendered":"\n<h2>NodeJS Todo list<\/h2>\n\n\n\n<ul><li>todo list \uc6f9 \ud398\uc774\uc9c0\ub97c NodeJS \uc11c\ubc84\ub97c \ud1b5\ud574 \ud638\uc2a4\ud305<\/li><li>todo list \uc800\uc7a5 \ubc0f \ubd88\ub7ec\uc624\uae30 API \uad6c\ud604<\/li><\/ul>\n\n\n\n<h2>Todo list API<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n# index.js\n\nvar express = require('express');\nvar app = express();\n\n\/\/var todos = {};\nvar todos = { &quot;\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uacf5\ubd80\ud558\uae30&quot;: true };\n\napp.use(express.json());\napp.use(express.static(&quot;public&quot;));\n\napp.post(&quot;\/todos&quot;, function(req, res) {\n    todos = req.body.todos;\n    console.log(req.body);\n    res.status(200).send({ message: &quot;success&quot; });\n});\n\napp.get(&quot;\/todos&quot;, function(req, res) {\n    res.status(200).send(todos);\n})\n\napp.listen(3000, function() {\n    console.log(&quot;3000 \ud3ec\ud2b8\ub85c \uc6f9\uc11c\ubc84 \uc2e4\ud589!&quot;);\n});\n<\/pre><\/div>\n\n\n<ul><li>http:\/\/localhost:3000\/todos<ul><li>\uc751\ub2f5 : { &#8220;\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uacf5\ubd80\ud558\uae30&#8221;: true }<\/li><\/ul><\/li><li>app.use(express.static(&#8220;public&#8221;));<ul><li>\uc6f9 \uc2dc\uc791 \ub514\ub809\ud1a0\ub9ac : D:\\&#8230;\\my_todolist\\public <\/li><li>\uc5ec\uae30\uc5d0 \ud074\ub77c\uc774\uc5b8\ud2b8 html, css, js \ud30c\uc77c \uc704\uce58<\/li><\/ul><\/li><li>\uba54\uc11c\ub3c4 \uccb4\uc778(Method Chaining)<ul><li>res.status(200).send({ message: &#8220;success&#8221; });<\/li><li>\ud568\uc218\ub97c \uc5f0\uc18d\ud574\uc11c \ud638\ucd9c<\/li><li>\uac01 \ud568\uc218\ub4e4\uc774 \uc790\uc2e0\uc744 \ub9ac\ud134\ud574\uc11c \uac00\ub2a5 ( return this; )<\/li><\/ul><\/li><\/ul>\n\n\n\n<h2>Todo \ud074\ub77c\uc774\uc5b8\ud2b8<\/h2>\n\n\n\n<ul><li>\uc800\uc7a5\ud568\uc218<\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nfunction saveTodos() {\n    $.ajax({\n        url: &quot;http:\/\/localhost:3000\/todos&quot;,\n        method: &quot;POST&quot;,\n        data: JSON.stringify({ todos: todos }),\n        dataType: &quot;json&quot;,\n        contentType: &quot;application\/json&quot;\n    }).done(function() {\n        console.log(&quot;POST done&quot;);\n    })\n}\n<\/pre><\/div>\n\n\n<ul><li>\uccb4\ud06c\ubc15\uc2a4 \uc815\ubcf4 \ucd94\uac00<\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nfunction inputTemplate(text, checked) {\n    var inputTag = $('&lt;input type=&quot;checkbox&quot; id=&quot;checkBox&quot;&gt;');\n    inputTag.data('value', text);\n    inputTag.attr('checked', checked);\n    return inputTag;\n}\n<\/pre><\/div>\n\n\n<ul><li>\ucd94\uac00\ubc84\ud2bc, \uccb4\ud06c\ubc15\uc2a4, \uc0ad\uc81c\ubc84\ud2bc \ud074\ub9ad\uc2dc \uc800\uc7a5\ud568\uc218 saveTodos(); \ud638\ucd9c<\/li><\/ul>\n\n\n\n<ul><li>\uc2dc\uc791\uc2dc \uc11c\ubc84\uc5d0 \uc800\uc7a5\ub41c \uba54\ubaa8\uc815\ubcf4 \ub85c\ub4dc<\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n$.ajax(&quot;http:\/\/localhost:3000\/todos&quot;).done(function(result) {\n    console.log(result);\n\n    todos = result;\n    for (const todo of Object.keys(todos)) {\n        $(&quot;.contents ul&quot;).append(liTemplate(todo, todos&#x5B;todo]));\n    }\n});\n<\/pre><\/div>\n\n\n<div class=\"wp-block-file\"><a href=\"http:\/\/mylittleforest.kr\/wordpress\/wp-content\/uploads\/2022\/02\/my_todolist.zip\">my_todolist<\/a><a href=\"http:\/\/mylittleforest.kr\/wordpress\/wp-content\/uploads\/2022\/02\/my_todolist.zip\" class=\"wp-block-file__button\" download>\ub2e4\uc6b4\ub85c\ub4dc<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>NodeJS Todo list todo list \uc6f9 \ud398\uc774\uc9c0\ub97c NodeJS \uc11c\ubc84\ub97c \ud1b5\ud574 \ud638\uc2a4\ud305 todo list \uc800\uc7a5 \ubc0f \ubd88\ub7ec\uc624\uae30 API \uad6c\ud604 Todo list API http:\/\/localhost:3000\/todos \uc751\ub2f5 : { &#8220;\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uacf5\ubd80\ud558\uae30&#8221;: true } app.use(express.static(&#8220;public&#8221;)); \uc6f9 \uc2dc\uc791 \ub514\ub809\ud1a0\ub9ac : D:\\&#8230;\\my_todolist\\public \uc5ec\uae30\uc5d0 \ud074\ub77c\uc774\uc5b8\ud2b8 html, css, js \ud30c\uc77c \uc704\uce58 \uba54\uc11c\ub3c4 \uccb4\uc778(Method Chaining) res.status(200).send({ message: &#8220;success&#8221; }); \ud568\uc218\ub97c \uc5f0\uc18d\ud574\uc11c \ud638\ucd9c \uac01 \ud568\uc218\ub4e4\uc774 \uc790\uc2e0\uc744 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false},"categories":[38,37],"tags":[],"_links":{"self":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1258"}],"collection":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=1258"}],"version-history":[{"count":3,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1258\/revisions"}],"predecessor-version":[{"id":1273,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1258\/revisions\/1273"}],"wp:attachment":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1258"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}