Skip to content

Minimalistic Web framework for Node.js, 0 dependencies

License

Notifications You must be signed in to change notification settings

softchris/mini-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3c00299 · Jun 18, 2020

History

7 Commits
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020
Jun 18, 2020

Repository files navigation

The MIT License Coverage npm version npm downloads

Table of Contents

About

This is a minimalistic Web framework for Node.js. It helps you create RESTful APIs.

The idea is to have 0 dependencies while still have all the functionality you would expect from bigger frameworks like Express, Koa, Fastify etc with just a fraction of the footprint.

Install

npm install quarkhttp

## Features

  • Create routes supporting GET, POST, PUT, DELETE HTTP Verbs. There are convenience methods for this:

    app.get('<path>', (req, res) => {})
    app.post('<path>', (req, res) => {})
    app.put('<path>', (req, res) => {})
    app.delete('<path>', (req, res) => {})
  • Reads posted body to either Text or JSON. Use method bodyParse(method) to change how the body is parsed. Valid input values json or text.

  • Has middleware that you can run before handling the actual request. Can be used for Authentication for example.

    app.get('/products', (req, res, next) => {
      if (req.headers['authorization'] === 'abc123') {
        next();
      } else {
        res.statusCode = 401;
        res.send('Not allowed')
      }
    })
  • Handles route parameters and query parameters

    Router parameters

    app.get('/products/:id', (req, res) => {
      console.log(req.params) // for route /products/1 { id: "1" }
    })

    Query parameters

    app.get('/products/', (req, res) => {
      console.log(req.query) // for route /products?page=1&pageSize=20 { page: "1", pageSize: "20"}
    })

Create an app

const quark = require('quarkhttp');

const app = quark();

// ROUTE PARAMETERS
app.get("/products/:id", (req, res) => {
  console.log("query params", req.query);
  console.log('req.params', req.params);
  res.send("product id");
});

app.get('/products', (req, res) => {
  console.log('query params', req.query)
  res.send('text');
})

// POST
app.post('/products', (req,res) => {
  console.info('body', req.body)
  res.json(req.body);
})

// PUT
app.put('/products', (req,res) => {
  console.info('body', req.body)
  res.json(req.body);
})

// MIDDLEWARE
app.get('/orders', (req, res, next) => {
  if (req.headers['authorization'] === 'abc123') {
    console.log('next', next)
    next()
  } else {
    res.statusCode = 401;
    res.send('Not allowed')
  }
}, (req, res) => {
  res.send('Protected route');
})

// Starts listening to requests
app.listen(3000, () => {
  console.log('Server running on 3000');
})

About

Minimalistic Web framework for Node.js, 0 dependencies

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published