3.0.3 • Published 11 months ago

morpress.js v3.0.3

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
11 months ago

Morpress.js

Morpress.js is a lightweight and straightforward API framework for Node.js. It provides core functionalities for creating HTTP servers with custom routing, static file serving, rate limiting, and basic security measures, all without relying on Express.

Features

  • Routing: Define routes for HTTP methods (GET, POST, PUT, DELETE, PATCH)
  • Static File Serving: Serve static files from specified directories
  • Rate Limiting: Prevent abuse by limiting requests from a single IP
  • Security: Basic security enhancements with Helmet
  • Middleware Support: Use global middleware for request processing
  • Error Handling: Custom error handling

Installation

Install the necessary dependencies using npm:

npm install morpress.js

Usage

Basic Setup

Here’s a basic example to get started:

const { Morpress, Router } = require('morpress.js');

// Create an instance of Morpress.js
const app = new Morpress();

// Configure rate limiting
app.rateLimit({
    windowMs: 15 * 60 * 1000, // 15 minutes
    max: 100 // Maximum 100 requests
});

// Add middleware
app.use((req, res, next) => {
    console.log(`Received request: ${req.method} ${req.url}`);
    next();
});

// Define routes
app.get('/hello', (req, res) => {
    res.json({ message: 'Hello, world!' });
});

app.post('/data', (req, res) => {
    res.json({ received: req.body });
});

// Serve static files
app.static('./public');

// Use a Router
const router = new Router();
router.get('/nested', (req, res) => {
    res.json({ message: 'Nested route' });
});
app.use('/api', router);

// Set error handler
app.setErrorHandler((err, req, res) => {
    res.status(500).json({ error: 'Something went wrong!' });
});

// Start the server
app.listen(3000, () => {
    console.log('Server running on port 3000');
});

Rate Limiting

Rate limiting helps control the number of requests an IP address can make in a given timeframe. Configure it with:

app.rateLimit({
    windowMs: 15 * 60 * 1000, // 15 minutes
    max: 100 // Maximum 100 requests per window
});

Static File Serving

To serve static files, specify directories using the static method:

app.static('./public');

Error Handling

Define a custom error handler to manage errors:

app.setErrorHandler((err, req, res) => {
    res.status(500).json({ error: 'Something went wrong!' });
});

API

Morpress Class

  • use(path, middlewareOrRouter): Add global middleware or Router.
  • get(path, handler): Define a route for GET requests.
  • post(path, handler): Define a route for POST requests.
  • put(path, handler): Define a route for PUT requests.
  • delete(path, handler): Define a route for DELETE requests.
  • patch(path, handler): Define a route for PATCH requests.
  • static(path): Serve static files from the specified directories.
  • trustProxy(value): Configure proxy settings.
  • sessionOptions(options): Configure session settings.
  • rateLimit(options): Set rate limiting options.
  • setErrorHandler(handler): Define a custom error handler.
  • listen(port, callback): Start the server on the specified port.

Router Class

  • use(path, middleware): Add middleware to the Router.
  • get(path, handler): Define a route for GET requests.
  • post(path, handler): Define a route for POST requests.
  • put(path, handler): Define a route for PUT requests.
  • delete(path, handler): Define a route for DELETE requests.
  • patch(path, handler): Define a route for PATCH requests.
  • handle(req, res): Handle incoming requests.

License

This project is licensed under the MIT License. See the LICENSE file for more details.