{"id":1275,"date":"2015-03-13T11:17:22","date_gmt":"2015-03-13T11:17:22","guid":{"rendered":"http:\/\/www.nikola-breznjak.com\/blog\/?p=1275"},"modified":"2015-08-10T06:47:01","modified_gmt":"2015-08-10T06:47:01","slug":"codeschool-express-js-notes","status":"publish","type":"post","link":"https:\/\/nikola-breznjak.com\/blog\/javascript\/nodejs\/codeschool-express-js-notes\/","title":{"rendered":"Codeschool Express.js Notes"},"content":{"rendered":"<p>Building blocks of Express.js on <a href=\"http:\/\/mbsy.co\/7Qm2h\">CodeSchool<\/a>, \u00a0notes below&#8230; If you&#8217;re interested for more in depth tutorial about Node.js and Express, make sure you check out the 2nd tutorial (free, OFC) in a MEAN series I made for <a href=\"https:\/\/hackhands.com\/\">HackHands<\/a>\u00a0named\u00a0<a href=\"https:\/\/hackhands.com\/delving-node-js-express-web-framework\/\">Delving into Node.js and Express web framework<\/a>.<\/p>\n<h2>Level 1<\/h2>\n<p>Install Express with npm:<\/p>\n<pre class=\"lang:default decode:true\">npm install express<\/pre>\n<p>Simples web server which responds with <em>Howdy!<\/em><\/p>\n<pre class=\"lang:default decode:true\">var express = require('express');\r\nvar app = express();\r\n\r\napp.get('\/', function(req, res){\r\n    res.json(\"Howdy!\");\r\n});\r\n\r\napp.listen(1337); \/\/tcp port btw<\/pre>\n<p>Test with curl (-i switch prints the headers):<\/p>\n<pre class=\"lang:default decode:true  \">curl -i http:\/\/localhost:1337<\/pre>\n<p>Redirecting the requests:<\/p>\n<pre class=\"lang:default decode:true\">res.redirect(301, '\/newLink');<\/pre>\n<h2>Level 2<\/h2>\n<p>Static middleware to serve files from folder <em>public<\/em>.<\/p>\n<pre class=\"lang:default decode:true\">app.use(express.static('public'));<\/pre>\n<pre class=\"lang:default decode:true\">app.use(function(req, resp, next){\r\n    ...some work, when done call Ghost buster, erm, no\r\n    next();\r\n});<\/pre>\n<h2>Level 3<\/h2>\n<pre class=\"lang:default decode:true\">app.get('\/blocks', function(request, response) {\r\n    \/\/request.query.limit\r\n    \/\/if the request was like \/api?limit=10\r\n});<\/pre>\n<pre class=\"lang:default decode:true\">app.get('\/blocks\/:name', function(request, response) {\r\n    \/\/request.params.name\r\n});<\/pre>\n<h2>Level 4<\/h2>\n<pre class=\"lang:default decode:true\">\/\/npm install body-parser\r\n\r\nvar bodyParser = require('body-parser');\r\nvar parseUrlencoded = bodyParser.urlencoded({ extended: false });\r\n\/\/false forces the use of the native querystring Node library\r\n\r\napp.post('\/api', parseUrlencoded, function(request, response) {\r\nvar blocks = { ... };\r\nvar newBlock = request.body;\r\n});\r\n<\/pre>\n<h2>Level 5<\/h2>\n<pre class=\"lang:default decode:true\">app.route('\/cities')\r\n.get(function (request, response) {\r\n})\r\n.post(parseUrlencoded, function (request, response) {\r\n});<\/pre>\n<p>Instead of<\/p>\n<pre class=\"lang:default decode:true\">app.get('\/apiEndpoint', function (request, response) {\r\n});\r\napp.post('\/apiEndpoint', parseUrlencoded, function (request, response) {\r\n});<\/pre>\n<p>Using the router to put in different file:<\/p>\n<pre class=\"lang:default decode:true\">var router = express.Router();\r\n\r\nrouter.route('\/', router)\r\n  .get(function (request, response) {\r\n  })\r\n  .post(parseUrlencoded, function (request, response) {\r\n  });\r\n\r\nrouter.route('\/:name', router)\r\n  .get(function (request, response) {\r\n  })\r\n  .delete(function (request, response) {\r\n  });\r\n\r\napp.use('\/cities', router);<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Building blocks of Express.js on CodeSchool, \u00a0notes below&#8230; If you&#8217;re interested for more in depth tutorial about Node.js and Express, make sure you check out the 2nd tutorial&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1288,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1275","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nodejs"],"_links":{"self":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts\/1275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/comments?post=1275"}],"version-history":[{"count":6,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts\/1275\/revisions"}],"predecessor-version":[{"id":1291,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/posts\/1275\/revisions\/1291"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/media\/1288"}],"wp:attachment":[{"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/media?parent=1275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/categories?post=1275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nikola-breznjak.com\/blog\/wp-json\/wp\/v2\/tags?post=1275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}