1.1.2 • Published 5 years ago

rkrouter v1.1.2

Weekly downloads
15
License
ISC
Repository
github
Last release
5 years ago

RK Router 🚀

About this technology:

  • RKRouter is a lightweight package to create RESTful API server.
  • Code-style spirited by React.
  • Written by RK Nguyen. (fb/rknguyen for support)

Installation

This technology is released in the public npm registry and can be installed using:

npm install rkrouter

Usage

See some examples below, it is very easy for beginners to read and approach to this technology.

Init routes

const { Route, Listener } = require('rkrouter')

const Parser = require('./route/Parser')
const Hello = require('./route/Hello')
const Otherwise = require('./route/Otherwise')

const Port = 3001
const http = new Listener(
[ 
  Parser, 
  Hello, 
  Otherwise 
], 
Port)

http.CreateServer()

route/Parser

This route is similar to a middleware that parse input data before go to main route.

const { Route } = require('rkrouter')
const BodyParser = require('body-parser')
const QueryString = require('query-string')

class Parser extends Route {
  async Handle(req, res, next) {
    const __Parser = (parser) => new Promise((next) => parser(req, res, next))
    req.query = QueryString.parse(req.url.query)
    await __Parser(BodyParser.json())
    await __Parser(BodyParser.urlencoded({ extended: false }))
    next()
  }
}

module.exports = Parser

route/Hello

This route is just an example for main route. This example also shows you what you can do with one route, its basically is:

  • Path: define the path that match this route
  • PreEnter: define some validate before handle request
  • Handle: process something...
  • InputSchema: Define the rules of input, it is just a schema validation
const { Route } = require('rkrouter')

class Hello extends Route {
  async Path() { return '/hello/:name' }
  async PreEnter(req, res, enter) {
    // check something before enter the route
    // if not valid to enter, must res.end()
    enter()
  }
  async Handle(req, res, next) {
    res.statusCode = 200
    res.json({
      hello: req.params.name,
      ...{ query: req.query },
      ...{ body: req.body }
    })
  }
  async InputSchema() {
    return {
      msg: {
        type: String,
        length: {
          min: 5,
          max: 10
        }
      }
    }
  }
}

module.exports = Hello

route/Otherwise

When can't find any route match with current request, this route is the last route that shows not found message.

const { Route } = require('rkrouter')

class Otherwise extends Route {
  async Handle(req, res) {
    res.statusCode = 404
    res.json({
      error: true,
      message: "404 not found"
    })
  }
}

module.exports = Otherwise

Got problem?

Just contact me (fb/rknguyen)

Hope you like this technology ❤️

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago