Estoy creando una API con middleware express y JSON. Quiero tener un middleware genérico que envuelva cada respuesta JSON. El ajuste es un proceso asincrónico: hay un proceso de back-end que genera asincrónicamente una firma para el objeto JSON dado. Ejemplo:
Una ruta:
app.use("/", (req, res) => res.json({status: "ok"}))Idealmente, el middleware interceptaría la respuesta JSON, generaría asíncronamente una firma y finalmente enviaría al usuario el siguiente JSON:
{ "signature": "...", "content": { "status": "ok" } }¿Cuál es el mejor enfoque para crear un middleware de este tipo?
He intentado reemplazar res.json con una función personalizada. El problema con esta solución es que la generación de firmas es asíncrona, pero res.json es una función síncrona. Este fue mi enfoque:
export function signatureMiddleware(req, res, next) { var json = res.json; res.json = async function (obj) { json.call(this, await wrapAndSign(obj)); }; next(); }