Как можно передать класс чтобы express подхватил методы post, put и т.д?

Для того чтобы класс в Node.js был передан и express мог использовать методы post, put и другие, необходимо использовать middleware - это функцию, которая выполняется перед тем, как обработчик маршрута будет вызван.

Есть несколько способов передать класс в express.

1. Использование глобальной переменной:

const express = require('express');
const app = express();

class MyClass {
    // ...
}

// Создаем экземпляр класса
const myClassInstance = new MyClass();

// Передаем экземпляр класса через глобальную переменную
app.use((req, res, next) => {
    req.myClass = myClassInstance;
    next();
});

// Теперь класс доступен в обработчиках маршрутов
app.post('/myroute', (req, res) => {
    // Используем метод класса
    req.myClass.someMethod();
    res.send('Success');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

2. Использование middleware функции:

const express = require('express');
const app = express();

class MyClass {
    // ...
}

// Создаем экземпляр класса
const myClassInstance = new MyClass();

// Создаем middleware функцию, которая передает класс
function myMiddleware(req, res, next) {
    req.myClass = myClassInstance;
    next();
}

// Подключаем middleware к каждому маршруту
app.use(myMiddleware);

// Теперь класс доступен в обработчиках маршрутов
app.post('/myroute', (req, res) => {
    // Используем метод класса
    req.myClass.someMethod();
    res.send('Success');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

3. Использование класса-обертки для express:

const express = require('express');
const app = express();

class MyClass {
    // ...
}

class Wrapper {
    constructor() {
        this.myClass = new MyClass();
    }

    // Методы-обертки для express
    post(path, handler) {
        app.post(path, (req, res) => {
            req.myClass = this.myClass;
            handler(req, res);
        });
    }

    put(path, handler) {
        app.put(path, (req, res) => {
            req.myClass = this.myClass;
            handler(req, res);
        });
    }

    // ...
}

// Создаем экземпляр класса-обертки
const wrapper = new Wrapper();

// Определяем маршруты с использованием методов-оберток
wrapper.post('/myroute', (req, res) => {
    // Используем метод класса
    req.myClass.someMethod();
    res.send('Success');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

Каждый из этих способов позволяет передать класс в express и использовать его методы в обработчиках маршрутов. Выбор способа зависит от особенностей вашего проекта и предпочтений разработчиков.