ExpressJS - Промежуточное программное обеспечение с общим откликом - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу настроить промежуточное ПО таким образом, чтобы каждое промежуточное ПО «оканчивалось» на одно общее промежуточное ПО, которое устанавливает объект ответа для отправки.Мне это нужно, потому что мне нужно добавить несколько пользовательских заголовков и ответных сообщений (включая i18n), прежде чем я сделаю res.status(code).send(resp).

Вот структура, которую я имею в виду.

function appSeup() {
    const app = express()
    //  API token check
    app.use((req, res, next) => {
        let options = {
            requestId: req.get('...'),
            token: req.get('...')
        }
        let c = auth.authenticate(options)
        if (c.check) {
            // Go to common response object middleware with c
        } else {
            // Go to common response object middleware with c
        }
    })
    // End-points
    app.post('/books', async (req, res, next) => {
        let c = createBookService(req)
        // Go to common response object middleware with c
    })
    //
    app.post('/book/:bookId', async (req, res, next) => {
        let c = getBookService(req)
        // Go to common response object middleware with c
    })
    // 404 - Not found
    app.use((req, res, next) => {
        let c = mw.notfound(req)
        // Go to common response object middleware with c
    })
    // Common response object
    app.use((req, res, next) => {
        // Build common response object with custom headers and response messsages.
        // How do I pass the c created by any of the above?
    })
    return app
}
...