Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/softchris/mini-web
Minimalistic Web framework for Node.js, 0 dependencies
https://github.com/softchris/mini-web
Last synced: 12 days ago
JSON representation
Minimalistic Web framework for Node.js, 0 dependencies
- Host: GitHub
- URL: https://github.com/softchris/mini-web
- Owner: softchris
- License: mit
- Created: 2020-06-18T12:37:24.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-01-24T02:59:17.000Z (almost 2 years ago)
- Last Synced: 2024-10-04T12:14:07.845Z (about 1 month ago)
- Language: JavaScript
- Size: 1.03 MB
- Stars: 50
- Watchers: 3
- Forks: 11
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
[![The MIT License](https://img.shields.io/badge/license-MIT-orange.svg?color=blue&style=flat-square)](http://opensource.org/licenses/MIT)
![Coverage](./badges/coverage.svg)
[![npm version](https://badge.fury.io/js/quarkhttp.svg)](https://www.npmjs.com/package/quarkhttp)
[![npm downloads](https://img.shields.io/npm/dm/quarkhttp?color=blue&label=npm%20downloads&style=flat-square)](https://www.npmjs.com/package/quarkhttp)## Table of Contents
- [About](#about)
- [Install](#install)
- [Features](#features)
- [Create an app](#create-an-app)## 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
```bash
npm install quarkhttp
```## Features
- Create routes supporting GET, POST, PUT, DELETE HTTP Verbs. There are convenience methods for this:
```javascript
app.get('', (req, res) => {})
app.post('', (req, res) => {})
app.put('', (req, res) => {})
app.delete('', (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.```javascript
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**
```javascript
app.get('/products/:id', (req, res) => {
console.log(req.params) // for route /products/1 { id: "1" }
})
```**Query parameters**
```javascript
app.get('/products/', (req, res) => {
console.log(req.query) // for route /products?page=1&pageSize=20 { page: "1", pageSize: "20"}
})
```## Create an app
```javascript
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');
})
```