Как и в любом обычном кодировании, если вы хотите применить общую операцию к группе методов, то создайте общую функцию и вызовите эту функцию из всех этих методов вместо res.json(...)
.
function sendJsonExtra(res, obj) {
obj.timestamp = Date.now();
obj.baseurl = ...
res.json(obj);
}
Затем просто используйте эту функцию вместо res.json()
везде, где вы хотите, чтобы этот набор общих свойств был добавлен к вашему объекту.
У вас также может быть промежуточное ПО, которое добавит эту функцию в качестве метода к res
object, чтобы вы могли затем просто позвонить res.sendJsonExtra(obj)
, если вам больше нравится эта структура.
// middleware to add `res.sendJsonExtra()` method to each request
// so other code can then call it as needed
function jsonExtra(req, res, next) {
res.sendJsonExtra = function(obj) {
obj.timestamp = Date.now();
obj.baseurl = ...
res.json(obj);
}
next();
}
router.use(jsonExtra);
Тогда любой обработчик маршрута, который хочет добавить дополнительные данные, может просто вызвать res.sendJsonExtra(obj)
. Это позволяет каждому обработчику маршрута решить, хочет ли он добавить дополнительные свойства или нет, и делает код более самодокументированным по сравнению с исправлением обезьяны res.json()
для изменения его поведения.