<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shaheb Ali</title>
    <description>The latest articles on DEV Community by Shaheb Ali (@systembugbd).</description>
    <link>https://dev.to/systembugbd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F483591%2F31ba6702-e1b6-4e7a-af87-b3d0ae2a9f0c.png</url>
      <title>DEV Community: Shaheb Ali</title>
      <link>https://dev.to/systembugbd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/systembugbd"/>
    <language>en</language>
    <item>
      <title>Node-Express basic Project Setup with folder Structure for beginners</title>
      <dc:creator>Shaheb Ali</dc:creator>
      <pubDate>Wed, 08 Dec 2021 15:22:11 +0000</pubDate>
      <link>https://dev.to/systembugbd/node-express-basic-project-setup-with-folder-structure-for-beginners-3162</link>
      <guid>https://dev.to/systembugbd/node-express-basic-project-setup-with-folder-structure-for-beginners-3162</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5puy40vslh780kanh5ra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5puy40vslh780kanh5ra.png" alt="Clean Code Architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://alistair.cockburn.us/Hexagonal+architecture" rel="noopener noreferrer"&gt;Hexagonal Architecture&lt;/a&gt; (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book &lt;a href="http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627" rel="noopener noreferrer"&gt;Growing Object Oriented Software&lt;/a&gt;&lt;br&gt;
&lt;a href="http://jeffreypalermo.com/blog/the-onion-architecture-part-1/" rel="noopener noreferrer"&gt;Onion Architecture&lt;/a&gt; by Jeffrey Palermo&lt;br&gt;
&lt;a href="http://blog.cleancoders.com/2011-09-30-Screaming-Architecture" rel="noopener noreferrer"&gt;Screaming Architecture&lt;/a&gt; from a blog of mine last year&lt;br&gt;
&lt;a href="http://www.amazon.com/Lean-Architecture-Agile-Software-Development/dp/0470684208/" rel="noopener noreferrer"&gt;DCI&lt;/a&gt; from James Coplien, and Trygve Reenskaug.&lt;br&gt;
&lt;a href="http://www.amazon.com/Object-Oriented-Software-Engineering-Approach/dp/0201544350" rel="noopener noreferrer"&gt;BCE&lt;/a&gt; by Ivar Jacobson from his book Object Oriented Software Engineering: A Use-Case Driven Approach&lt;/p&gt;

&lt;p&gt;Don't get panic to see above architectural article, all above only for your reference, if you wish to read and gather knowledge you can through the link. &lt;br&gt;
See below article to create a express server and project setup step by step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic setup step by step
&lt;/h2&gt;

&lt;p&gt;Open cmd and go to your desired folder now write -&lt;br&gt;
&lt;code&gt;mkdir cleancodeStructure&lt;/code&gt;&lt;br&gt;
&lt;code&gt;cd cleancodeStructure&lt;/code&gt;&lt;br&gt;
&lt;code&gt;npm init -y&lt;/code&gt; to initiate the &lt;strong&gt;package.json&lt;/strong&gt; file into your project you will see in sidebar- &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtdrbu8w77qvgamxujm8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtdrbu8w77qvgamxujm8.png" alt="package.json"&gt;&lt;/a&gt;&lt;br&gt;
now install few package into your project to make it trackable and maintainable and workable-&lt;br&gt;
&lt;code&gt;npm i express cros morgan dotenv&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxbjbtqifx0guu50ogvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxbjbtqifx0guu50ogvw.png" alt="dependencies"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;also install nodemon to keep your server ups and running once start &lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm i -D nodemon&lt;/code&gt; -D as a &lt;strong&gt;devDependencies&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwlpvmmamd7je9yyiyol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwlpvmmamd7je9yyiyol.png" alt="devDependencies"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now create &lt;strong&gt;server.js&lt;/strong&gt; &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstc62v3z0ttmz1wghu1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstc62v3z0ttmz1wghu1f.png" alt="server.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;in the same level of &lt;strong&gt;package.json&lt;/strong&gt; &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ymsm8np9235oxw6u968.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ymsm8np9235oxw6u968.png" alt="package.json"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;import some necessary file to server.js like below&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4hdeym1m978vek6nlhu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4hdeym1m978vek6nlhu.png" alt="import some necessary file to server.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and write few lines of code to make a &lt;strong&gt;nodejs server&lt;/strong&gt; like below Please give online line break-&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1ihyubt10hkeinkq176.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1ihyubt10hkeinkq176.png" alt="server.js"&gt;&lt;/a&gt;&lt;br&gt;
now come to the next level of app and router section which you already included in &lt;strong&gt;server.js&lt;/strong&gt; but not yet created.&lt;/p&gt;

&lt;p&gt;create &lt;strong&gt;app&lt;/strong&gt; folder in the &lt;strong&gt;package.json&lt;/strong&gt; level and create *&lt;em&gt;app.js *&lt;/em&gt; to create express app for your project&lt;br&gt;
 &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5w01i4mm5utlv0rzuh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5w01i4mm5utlv0rzuh8.png" alt="App Folder with app.js to work with app level codebase"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App Folder&lt;/strong&gt; with &lt;strong&gt;app.js&lt;/strong&gt; to work with app level codebase&lt;/p&gt;

&lt;p&gt;now &lt;strong&gt;import express&lt;/strong&gt; into the &lt;strong&gt;app.js&lt;/strong&gt; file with &lt;strong&gt;getAppHealthCheckerController&lt;/strong&gt;, don't worry will talk about &lt;strong&gt;getAppHealthCheckerController&lt;/strong&gt; later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ldp3qxfzfwiyn5ie3j3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ldp3qxfzfwiyn5ie3j3.png" alt="import express into the app.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now come to below line and create a express app like below&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92gx6fkeiuwl6dolt3hg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92gx6fkeiuwl6dolt3hg.png" alt="express app"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;then define a &lt;strong&gt;route&lt;/strong&gt; for &lt;strong&gt;app health&lt;/strong&gt; called &lt;strong&gt;/health&lt;/strong&gt; route in the &lt;strong&gt;app.js&lt;/strong&gt; like below and export express app - &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1fows0nj5bhzig6ihqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1fows0nj5bhzig6ihqi.png" alt="the app health route"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now come to the router controller part, I mention above that, I will discuss about &lt;strong&gt;getAppHealthCheckerController&lt;/strong&gt; latter, now time to discuss in a short about app health route and Controller. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;/health&lt;/strong&gt; route&lt;br&gt;
Most of the server for backend API they checked one route that must be exists. do you know what is that? ok, I am telling you this is called &lt;strong&gt;/health&lt;/strong&gt; route. &lt;a href="https://www.digitalocean.com/" rel="noopener noreferrer"&gt;digital ocean&lt;/a&gt; one of the server service provider look first for &lt;strong&gt;/health&lt;/strong&gt; route. if API has health route they think that the API server health is good. generally this route expect status code 200 in response back.&lt;/p&gt;

&lt;p&gt;now create &lt;strong&gt;controller folder&lt;/strong&gt; in the &lt;strong&gt;package.json&lt;/strong&gt; level or &lt;strong&gt;first level&lt;/strong&gt; and &lt;strong&gt;app.js&lt;/strong&gt; controller inside the controller folder like below &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fisqhz28h2qpbpizc3c3m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fisqhz28h2qpbpizc3c3m.png" alt="controller folder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and code inside &lt;strong&gt;app.js&lt;/strong&gt; like below-&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx9sfkfmja9hiumo0p9ym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx9sfkfmja9hiumo0p9ym.png" alt="app.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now config your &lt;strong&gt;package.json&lt;/strong&gt; file script like below -&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzfyibwjfkasgbbj8a4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzfyibwjfkasgbbj8a4r.png" alt="script dev"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now you are ready to check your &lt;strong&gt;/health&lt;/strong&gt; route from browser.&lt;br&gt;
go to terminal of of your &lt;strong&gt;vscode&lt;/strong&gt; and type &lt;code&gt;npm run dev&lt;/code&gt; and hit &lt;a href="http://localhost:4444/health" rel="noopener noreferrer"&gt;http://localhost:4444/health&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;its time to Bloom&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawda6129wbeg9yc1z4vq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawda6129wbeg9yc1z4vq.png" alt="http://localhost:4444/health"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Welcome you made an express app with the health route; you are almost done to go a good way to write your code in a good structure.&lt;/p&gt;

&lt;p&gt;now create a &lt;strong&gt;routes&lt;/strong&gt; folder with &lt;strong&gt;router.js&lt;/strong&gt; file like below example.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29t07uc1zz0ss3rykojw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29t07uc1zz0ss3rykojw.png" alt="routes folder with router.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and create some route like below&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F23ozck2i0unjc5n5lfn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F23ozck2i0unjc5n5lfn5.png" alt="some route"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;then go to &lt;strong&gt;Controller folder&lt;/strong&gt; to create some controller which you attached with the above &lt;strong&gt;new route&lt;/strong&gt; (&lt;strong&gt;getHomeController&lt;/strong&gt;, &lt;strong&gt;getBlogController&lt;/strong&gt;, &lt;strong&gt;getBlogByIdController&lt;/strong&gt;), in &lt;strong&gt;router.js&lt;/strong&gt; file.&lt;/p&gt;

&lt;p&gt;at first create &lt;strong&gt;home.js&lt;/strong&gt; in &lt;strong&gt;controller folder&lt;/strong&gt; and write some demo code for home route like below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9fy3krsfsu0yblsgax29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9fy3krsfsu0yblsgax29.png" alt="home.js"&gt;&lt;/a&gt;&lt;br&gt;
Secondly create &lt;strong&gt;blog.js&lt;/strong&gt; in &lt;strong&gt;controller folder&lt;/strong&gt; and write some code for blog route like below.&lt;/p&gt;

&lt;p&gt;define a blogData variable to write demo blog data for example -&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7ydvtkqj5e5cd191c1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7ydvtkqj5e5cd191c1n.png" alt="blogData"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now define a controller function &lt;code&gt;getBlogController&lt;/code&gt; like below to make the &lt;strong&gt;/blog&lt;/strong&gt; route workable and to see the blog API and paginate the Blog API;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimlgsyyp5ejvhit8pnu5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimlgsyyp5ejvhit8pnu5.png" alt="getBlogController"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I keep the all the code in this controller to make it simple, you can separate with the middleware.&lt;/p&gt;

&lt;p&gt;now hit &lt;a href="http://localhost:4444/blog" rel="noopener noreferrer"&gt;http://localhost:4444/blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fph4doqwmz8r6frbrd87r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fph4doqwmz8r6frbrd87r.png" alt="Blog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;you can paginate the Blog API like below &lt;a href="http://localhost:4444/blog?page=2&amp;amp;limit=1" rel="noopener noreferrer"&gt;http://localhost:4444/blog?page=2&amp;amp;limit=1&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5s1p8bw1i05u0f0vgkho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5s1p8bw1i05u0f0vgkho.png" alt="Blog API"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now create another route controller to get the blog by id. Its very simple to get specific blog data no matter where it is coming it may come from &lt;strong&gt;mongodb&lt;/strong&gt; or &lt;strong&gt;javascript object&lt;/strong&gt; or &lt;strong&gt;JSON data&lt;/strong&gt; or some where else, see below how to get data from javascript object by controller function in &lt;strong&gt;blog.js&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7dz96iv4cq1w83c3b34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7dz96iv4cq1w83c3b34.png" alt="blog.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and export both controller function, &lt;/p&gt;

&lt;p&gt;you can create &lt;strong&gt;index.js&lt;/strong&gt; file to export your all controller function from the controller folder together which will&lt;br&gt;
help you a lot to minify your code base and keep your code clean. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr5s3hmj61nv3ek3dp5v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr5s3hmj61nv3ek3dp5v.png" alt="index.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wmzmxn8wasz0pnuz180.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wmzmxn8wasz0pnuz180.png" alt="index.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;when you call the specific controller you just need to call the &lt;code&gt;const { yourController } = require('../controller');&lt;/code&gt; and extract the specific controller to use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d7lfsxrpr1en0da2psh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d7lfsxrpr1en0da2psh.gif" alt="Wow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;we are almost done, now see some middleware and wrap up for now...&lt;/p&gt;

&lt;h2&gt;
  
  
  middleware
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Middleware functions are functions that have access to the request object (req), the response object (res), and the next middleware function in the application’s request-response cycle. The next middleware function is commonly denoted by a variable named next.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Middleware functions can perform the following tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute any code.&lt;/li&gt;
&lt;li&gt;Make changes to the request and the response objects.&lt;/li&gt;
&lt;li&gt;End the request-response cycle.&lt;/li&gt;
&lt;li&gt;Call the next middleware function in the stack.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If the current middleware function does not end the request-response cycle, it must call next() to pass control to the next middleware function. Otherwise, the request will be left hanging.&lt;/strong&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;how to create a middleware and how to use see below example and folder structure  &lt;/p&gt;

&lt;p&gt;now create a folder called &lt;strong&gt;middleware&lt;/strong&gt; like below and create a demo middleware for testing purpose.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm4jwbb902ev80507wgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm4jwbb902ev80507wgy.png" alt="middleware "&gt;&lt;/a&gt;&lt;br&gt;
write some code like below to demo.js middleware&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fci8l1cxqwge7ov5l5sdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fci8l1cxqwge7ov5l5sdk.png" alt="demo.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;import and use to &lt;strong&gt;server.js&lt;/strong&gt; for all route &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fuuxekpn46eybo2nt3r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fuuxekpn46eybo2nt3r.png" alt="Server.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See middleware is working--&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz95v6k4ky5rrcgj71su0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz95v6k4ky5rrcgj71su0.png" alt="middleware"&gt;&lt;/a&gt;&lt;br&gt;
for more details &lt;a href="https://expressjs.com/en/guide/using-middleware.html" rel="noopener noreferrer"&gt;click here&lt;/a&gt; to visit express.js&lt;/p&gt;

&lt;h2&gt;
  
  
  Error handler
&lt;/h2&gt;

&lt;p&gt;you can create error folder in first level and create your own custom error handler, like below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8ybzla0zcn9uss47nrc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8ybzla0zcn9uss47nrc.png" alt="error handler"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;errorHandler.js&lt;/strong&gt; code sample looks like -  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcu3q2o9cm98rjf0op1s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcu3q2o9cm98rjf0op1s.png" alt="error handler"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;use it in &lt;strong&gt;server.js&lt;/strong&gt; like below by using &lt;strong&gt;app.use()&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnohhdyv42ui9tw9e4myz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnohhdyv42ui9tw9e4myz.png" alt="server.js"&gt;&lt;/a&gt;&lt;br&gt;
if error occur error message will show of the unexpected route &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hl3y9xryjq91ptgek6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hl3y9xryjq91ptgek6p.png" alt="error message"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;you are almost done with setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now you create all other folder for your convenient, it may be anything which one is required for your project, like below- &lt;br&gt;
log, service, public, utils, db, models etc as per your needs&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj9mnex88ujanjc8xbdu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj9mnex88ujanjc8xbdu.png" alt="Folder structure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft12y8gkhar83u3pbd5vb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft12y8gkhar83u3pbd5vb.png" alt="thank you"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Je_Zpf2snmQ&amp;amp;list=PL15CsFQf-JdzcYTsiOHM1pbgowXe-g2Fm" rel="noopener noreferrer"&gt;You can see a video more about NODE and Expressjs server and Paginated API creation-&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can learn docker from this &lt;a href="https://www.youtube.com/watch?v=RC9yxMcXquI&amp;amp;list=PL15CsFQf-JdzNcfMCSRmywaEkNNsbt5Xv" rel="noopener noreferrer"&gt;video&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;that's all about folder Structure and node express server creation with error handling and middleware&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
Above all I am human being, I have lots of mistake and lack of knowledge. So if i made any mistake and provide any misinformation, please correct me and pardon me. &lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwrfq54sdjmiuh4k9uln.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwrfq54sdjmiuh4k9uln.gif" alt="kudhahafez"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
      <category>node</category>
    </item>
  </channel>
</rss>
