2.1.0 • Published 12 months ago

4crud v2.1.0

Weekly downloads
32
License
MIT
Repository
github
Last release
12 months ago

4Crud

VERY SMALL (7kb) and fast Node.js module for API development written with ES6 features.

Maintenance HitCount npm

Getting Started

A fast and VERY SMALL Node.js framework for API development using HTTPS written with javascript ES6 features.

Prerequisites

  • nodejs 12.x +

Installing

npm install 4crud --save

Testing

This project uses Mocha-Chai combination in /test folder

npm test

or

node test/server.js

and in other cli type:

curl localhost:3000/getroute1?name=john

curl -X POST -H "Content-Type: application/json" -d '{"name":"john","password":"abc"}' localhost:3000/postroute1

Features

  • HTTPS or HTTP
  • Routing
  • Fast performance (Remember, ES6 have some intrinsic slowdowns but yes, it's fastest as express.js!)
  • Fast implementation on any type of API
  • Very small (just 15 KB!)

Usage

const Server = require('4crud')
const fs = require('fs') //Only for https

const privateKey = fs.readFileSync([PRIVATEKEYPATH], 'utf8') //Only for https
const certificate = fs.readFileSync([CERTIFICATEPATH], 'utf8') //Only for https

const credentials = {
  key: privateKey,
  cert: certificate,
  passphrase: [PASS] //if exists
} //Only for https

const server = new Server()

server
  // curl localhost:3000/getroute1?name=john
  .get('/route1', (req, res) => {
    console.log(`GET on route 1 with name: ${req.search.get('name')}`)
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.url))
  })
  .get('/route2', (req, res) => {
    //console.log('GET on route 2')
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end('Hello')
  })
  // curl -X POST -H "Content-Type: application/json" -d '{"name":"john","password":"abc"}' localhost:3000/postroute1
  .post('/route1', (req, res) => {
    console.log(`POST route 1 with name ${req.body.name}`)
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .post('/route2', (req, res) => {
    console.log('POST on route 2')
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .put('/route1', (req, res) => {
    console.log('PUT on route 1')
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .delete('/route2', (req, res) => {
    console.log(`DELETE on route 1 with name ${req.body.name}`)
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .start(3000, credentials) // start server at port 3000

Express.js comparison

Bellow the benchmark uses wrk (https://github.com/wg/wrk/wiki/Installing-Wrk-on-Linux)

Run on your preferred CLI on /test folder with server on:

wrk -t8 -c100 -d30s http://localhost:3000/getroute1
FrameworkRequests/secondSize(kB)
Express~05500260
4crud~1510015
Native~19000-

Running

npm start

Release History

  • 0.1.0
    • Basic routing implemented
  • 0.1.5
    • File server example added
    • Bugs fixed
    • Benchmark corrected
  • 1.0.1
    • Vulnerability corrections and production release
  • 2.0.0
    • HTTP protocol supressed. HTTPS implemented as the only protocol.
    • Bugs fixed.
  • 2.1.0
    • HTTPS and HTTP working together

Authors

  • GH3S - Initial work - gh3s@protonmail.ch

License

This project is licensed under the MIT License - see the LICENSE file for details

Contributing

  1. Fork it (https://github.com/gh3s/4crud/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request
1.1.0

12 months ago

2.1.0

12 months ago

2.0.0

12 months ago

1.0.1

2 years ago

0.1.5

3 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago

1.0.0

4 years ago