New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

4crud

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

4crud

Fast nodejs module for API development

latest
Source
npmnpm
Version
2.1.0
Version published
Weekly downloads
17
750%
Maintainers
1
Weekly downloads
 
Created
Source

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

License

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

Contributing

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

Keywords

nodejs

FAQs

Package last updated on 11 May 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts