DEV Community

Naren
Naren

Posted on • Edited on

2 2

API router wrapper for Express node.js

Hello everyone đź‘‹, I'm Naren.

I have developed a plugin to declare express api routes in node js in a easy way.

Feel free to check it out. Any corrections in plugin is highly appreciated.

Here's the npm link and brief explanation of the plugin.

Installation

npm i @naren_codes/server-router

Getting Started



const Router = require("@naren_codes/server-router");

const API_ROUTE = {
     // API url
     path : "user",
     // API method
     method : "get",
     /* Before Enter middleware - called before calling api handler 
        If returned Promise will call next() on resolve and ends api request without calling handler on reject
        If returns nothing calls next() after beforeEnter
        @params - request object
     */
    // Optional
     beforeEnter : (req) => {
          return Promise.resolve();
     },
     /* Api Handler - should return promise 
        @params - request object
     */
     handler : (req => {
          return Promise.resolve({
               data : "Hello World", // Response data for the api request
               status : 200, // Send any HTTP statuses
               headers : {
                    // Declare any response header to be binded in the request here
                    "Content-Type" : 'application/json', // Optional by default express will evaluate Content-Type
                    "Cache-Control" : `max-age=1000`
               },
               // Declare any cookies to be set in the client's browser
               cookies : {
                    auth_token : token
               }
          });
     }),
     // Child routes based on current route
     children : [
          {
               // userId will be a Dynamic value
               path : ":userId",
               method : "get"
               // Declare handler, beforeEnter, children
          }
     ]
}

/* @params { app, options }
 * app - app object obtained by called express() middleware
 * options - params to be passed for the router
*/

new Router(app, {
     routes : [
          API_ROUTE
          // other api routes
     ],
     /* For static based compressions and serving index.html on all routes 
      * path - folder containing static files (js/css/html)
      * entry_point - for single page applications html mentioned here will sent to browser for all routes that does not match declared routes
     */
     static : {
          path : path.resolve("./server/public"),
          entry_point : "index.html"
     }
});
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

SurveyJS custom survey software

JavaScript Form Builder UI Component

Generate dynamic JSON-driven forms directly in your JavaScript app (Angular, React, Vue.js, jQuery) with a fully customizable drag-and-drop form builder. Easily integrate with any backend system and retain full ownership over your data, with no user or form submission limits.

Learn more

đź‘‹ Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay