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.
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 valuesjson
ortext
. -
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"} })
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');
})